我在界面生成器中为 View 创建了一个 Nib 。它的 subview 放置有约束,因此它们将随着 View 框架的大小而缩放。
我使用辅助方法从其 Nib 初始化 View :
+ (TinyTestResultsView *)ttrView {
TinyTestResultsView *ttrV = [[[NSBundle mainBundle] loadNibNamed:@"TinyTestResultsViewNib" owner:nil options:nil] firstObject];
[ttrV commonInit];
return ttrV;
}
在 View Controller 的 viewDidLoad
期间,我使用 ttrView
方法初始化对象并将其作为 subview 添加到 self.view
。然后 VC 调用网络以获取一些信息,然后根据需要向 self.view
和 subview 添加约束以放置它。它被正确放置和调整大小——但是 View 显示为一个没有 subview 的白框。 为什么 subview 在 View 外呈现?
如果我在 Xcode 中使用 Debug View Hierarchy 然后尝试查找 subview ,我会发现它们在框架之外呈现,并且它们不符合 NIB 的自动布局规则。我正在为不同的自定义 UIView/nib 使用完全相同的技术,所以我不确定会发生什么错误。
最佳答案
您的 View 似乎需要将 translatesAutoresizingMaskIntoConstraints
设置为 NO
。当您以这种方式从 Nib 文件加载 View 时,此属性设置为 YES
,这意味着系统会创建一组约束来复制 View 的自动调整掩码指定的行为。当您使用自动布局时,这不是您想要的。
关于ios - UIView 的 subview 在边界外渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35368874/