UIView
いくつかの を埋め込むプログラムを作成しましたUIControl
(主にUIButton
、 、UISwitch
およびUILabel
)。-(id)initWithFrame:
このクラスの に背景色を設定します。カスタム ビュー内に配置するために、ビューに UIControls を追加するメッセージを作成しました。それはそのようなものです:
-(void) CreateGuiObjects
{
UIView *container = self;
//create uiswitch
mOnOffSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(10, 20, 0, 0)];
mOnOffSwitch.translatesAutoresizingMaskIntoConstraints = NO; //used for constraint testing
//add parent view (self)
[container addSubview: mOnOffSwitch];
/*
other stuff like above
*/
}
私のView Controllerには、外部ボタンのイベントハンドラーがあります。UIView
アクションは、Xcode の Storyboard Interface Builder で作成された空に上記のカスタム ビューを追加することです。
コードは次のようになります。
-(void)CreateButton
{
MyCustomView *view = [MyCustomView alloc] initWithFrame:CGRectMake(20,20,300,200)];
[self.view addSubview: view];
//now call my create method
[view CreateGuiObjects];
}
さて、問題はコントロールを描画することですが、それらを別の場所に配置しているようです...コンテナビューのフレーム原点を(20,20)に設定し、スイッチを(10,20)に配置しますこの点は、カスタム ビューの原点に相対的です。その位置の代わりに、ビューはその位置から遠く離れているように見えます.2番目の問題は、initWithFrame で設定された背景色 (灰色) が完全に無視されることです。CreateGuiObjects 内の addSubview へのすべての呼び出しを削除すると、空のビューが正しい背景色で正しい位置に描画されます。
編集: `mOnOffSwitch.translatesAutoresizingMaskIntoConstraints = NO; を削除した場合。それは正常に動作します...しかし、もう一度置くと動作しません。このプロパティの意味を深く理解する必要があります。
誰かが私を助けることができますか?ばかげた質問だと思いますが、iOS開発は初めてです:(
アドバイスありがとう