gpt4 book ai didi

ios - 以编程方式创建具有多个标签的 UIView

转载 作者:行者123 更新时间:2023-11-28 20:09:04 25 4
gpt4 key购买 nike

Xcode Interface Builder 问题
我个人不喜欢界面生成器在 Xcode 中的工作方式。在这个例子中,我试图创建一个相当复杂的 View Controller 。在 View Controller 的 viewDidLoad 上,我显示了一个自定义警报 View (如此)。它实际上不是一个警报 View ,而是一个向用户显示一些信息的 View 。我有一个暗淡的背景 View 和一个在此之上的 View 。如果我尝试在界面构建器中创建它,它会变得过于复杂,因为您无法在后台选择 View 并移动它们等,而不会将 subview 放入错误的 View 中等等...

场景
我想要做的是创建一个包含一些标签和一个按钮的 View 。 View Controller 有一个基于此的难度属性,它将在标签/标签数量中有不同的文本。
IE。简单 -- 3 个标签
硬 -- 4 个标签

我这样创建 dimmedView 和 alert(styled)View:

// Setup the dimmedView
UIView *dimmedView = [[UIView alloc] initWithFrame:self.view.frame];
dimmedView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.6];

// Setup the startingAlertView
UIView *startingAlertView = [[UIView alloc] init];
startingAlertView.backgroundColor = [UIColor whiteColor];

然后我根据一些逻辑创建三个/四个标签,并根据逻辑将必要的标签添加到 startingAlertView

显而易见的问题是,在任何时候都没有设置 View 的框架。这意味着它返回 0,0,0,0。我想要发生的是根据添加的标签获取所需高度的 View 。

我正在为 IOS7 构建并使用自动布局。我是否应该设置约束,然后可能会调整 View 中的相关高度和位置?

最佳答案

I am building for IOS7 and using Auto Layout. Should I be setting up constraints which would then adjust the relevant heights and locations in the view possibly?

是的。您不在自动布局下使用 initWithFrame:,或者更确切地说,您可以,但框架会被忽略。使用 CGRectZero 框架创建调光 View ,将 translatesAutoresizingMasksToConstraints 设置为 NO,将其添加到主视图并创建约束将其固定到父 View 的所有边缘。

然后,添加您的警报 View ,再次使用零帧并将 translates... 属性设置为 NO。创建约束以使该 View 在您的调光 View 中居中。该 View 将从其 subview 中获取其大小,因为标签具有固有大小。

将标签添加为该 View 的 subview ,框架为零,translates... 设置为 NO。根据它们的内容,您可能希望设置首选的最大布局宽度或宽度限制。

创建约束,将标签固定到父 View 的左右边缘,并将标签排列成垂直“堆栈”。在每种情况下,您都可以添加填充以使您的警报有点边界。

这看起来像是大量代码,因此您可能需要阅读我在 visual format for auto layout 上撰写的文章和 creating constraints in code , 以及相关联的 autolayout convenience category让您的生活更轻松。

关于ios - 以编程方式创建具有多个标签的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000392/

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