我以UIView
编程方式创建了一个嵌入多个UIControl
s(主要是UIButton
s、UISwitch
s 和UILabel
s)的程序。我在-(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
*/
}
然后在我的视图控制器中有一个外部按钮的事件处理程序;操作是将上述自定义视图添加到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)此点相对于自定义视图原点。而不是那个位置,视图似乎离那个位置很远,第二个问题是 initWithFrame 中设置的背景颜色(灰色)被完全忽略了。如果我删除 CreateGuiObjects 中对 addSubview 的所有调用,它会在正确的位置绘制具有正确背景颜色的空视图。
编辑:如果删除 `mOnOffSwitch.translatesAutoresizingMaskIntoConstraints = NO; 它工作正常......但如果我再把它不工作。需要深刻理解这个属性的含义。
有人可以帮助我吗?我认为这是一个愚蠢的问题,但我是 iOS 开发的新手 :(
感谢您的建议