【问题标题】:iOS - set subview width to be the same as parent (objective-c)iOS - 将子视图宽度设置为与父视图相同(objective-c)
【发布时间】:2016-10-09 23:45:47
【问题描述】:

我有一个带有UIView 的storybaord,其类设置为MyView(该类定义为@interface MyView : UIView)。

在课堂MyView,我有这样的结构:

-(void)awakeFromNib{            

    [super awakeFromNib];

    [[UINib nibWithNibName:@"MyNib" bundle:nil] instantiateWithOwner:self options:nil];

    [self addSubview:self.contentView];
}    

它从笔尖加载设计并将contentView 添加到其中。现在,如何将contentView 的宽度设置为与self 的宽度相同?我尝试在addSubview 方法下以编程方式添加约束,但应用程序崩溃了。

那么我应该在哪里添加约束以及代码应该如何?

【问题讨论】:

  • 不需要约束来使 wdith 相等。您为 xib 中的元素正确设置了约束。您可以在 awake from nib 方法中更改 xib 的框架。
  • 既然可以在界面生成器中设置约束,为什么还要在代码中添加约束?
  • @TejaNandamuri 谢谢...如果您将此作为答案,我会接受。

标签: ios objective-c autolayout


【解决方案1】:

您不必设置约束来使宽度相等。

只需为 xib 中的元素设置约束,以便它们根据其父视图框架对齐。

并且可以在awakeFromNib方法中设置xib视图框架。

【讨论】:

    【解决方案2】:

    您可以制作 xib 视图的出口,然后可以设置约束以编程方式查看其父视图。你可能从this 那里得到了想法。它应该可以工作。

    【讨论】:

    • 我使用过这种方法,但是它崩溃了......我不确定应该在哪里添加约束,因为在 awakeFromNib 中,会发生崩溃。
    • 我同意@teja Nandamuri 实际上您可以在 xib 视图中设置约束,然后在 viewDidAppeare 方法中,您可以添加与父视图框架宽度相同宽度的子视图,因为约束在 viewWillAppeare 之后执行.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多