gpt4 book ai didi

ios - 添加在 XIB UIView 中以编程方式创建的自定义 UIView

转载 作者:行者123 更新时间:2023-11-29 13:00:12 24 4
gpt4 key购买 nike

我以编程方式创建了一个 UIView,它嵌入了几个 UIControl(UIButtonUISwitchUILabel 为主)。我在这个类的 -(id)initWithFrame: 中设置了背景色。我创建了一条消息以在 View 中添加 UIControls,以便放入我的自定义 View 中。是这样的:

-(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 中有一个外部按钮的事件处理程序;该操作是在 Xcode 中使用 Storyboard Interface Builder 创建的空 UIView 中添加上述自定义 View 。

代码如下:

-(void)CreateButton
{
MyCustomView *view = [MyCustomView alloc] initWithFrame:CGRectMake(20,20,300,200)];
[self.view addSubview: view];
//now call my create method
[view CreateGuiObjects];
}

现在,问题是它绘制了控件,但似乎将它们放置在不同的位置...我将容器 View 的框架原点设置在 (20,20) 中,然后将开关放在 (10 ,20) 其中这一点是相对于自定义 View 原点的。而不是那个位置, View 似乎远离那个位置,第二个问题是 initWithFrame 中设置的背景颜色(灰色)被完全忽略。如果我在 CreateGuiObjects 中删除对 addSubview 的所有调用,它会使用正确的背景颜色和正确的位置绘制空 View 。

编辑:如果删除`mOnOffSwitch.translatesAutoresizingMaskIntoConstraints = NO;它工作正常......但如果我再次放它不起作用。需要深入理解这个属性的含义。

有人可以帮助我吗?我认为这是一个愚蠢的问题,但我是 iOS 开发的新手:(

多谢指教

最佳答案

Method translatesAutoresizingMaskIntoConstraints = YES 意味着 UIView 正在使用自动布局。

The fundamental building block in Auto Layout is the constraint. Constraints express rules for the layout of elements in your interface; for example, you can create a constraint that specifies an element’s width, or its horizontal distance from another element. You add and remove constraints, or change the properties of constraints, to affect the layout of your interface.

When calculating the runtime positions of elements in a user interface, the Auto Layout system considers all constraints at the same time, and sets positions in such a way that best satisfies all of the constraints.

阅读更多关于 Auto Layout Concepts 的信息

如果您不知道如何使用自动布局,我建议您将其关闭。

关于ios - 添加在 XIB UIView 中以编程方式创建的自定义 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19951351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com