【问题标题】:get the frame of a view made in IB in viewDidLoad?在 viewDidLoad 中获取 IB 中的视图框架?
【发布时间】:2012-10-09 19:37:28
【问题描述】:

当我在 Interface Builder 中创建标签并将插座连接到 viewController 时,并将标签记录在 viewDidLoad 中,如下所示:

NSLog(@"label: %@",self.label);

它给了我一个 (0,0,0,0) 的框架。 self.view 给了我一个大于 0 的大小。一个旧程序的标签也给了我一个大于 0 的大小。它会将文本记录在标签中,所以它是正确的。这是 Xcode 4.5 的变化吗?如何访问我在 Interface Builder 中设置的框架?

这是日志:

UILabel: 0x754e1b0;帧 = (0 0; 0 0); text = '这是一个标签'; clipsToBounds = YES;不透明=否;自动调整大小 = TM+BM;用户交互启用 = 否;层=...

【问题讨论】:

    标签: iphone xcode ios6


    【解决方案1】:

    通常框架布局在viewDidLoad 中是不可靠的。在笔尖的情况下,这应该不是问题。您是否有机会使用 AutoLayout?

    也请在viewWillAppear 中记录相同的值,这肯定会有正确的值。我通常使用viewWillLoad 来启动我的UI 元素,并使用viewWillLoad 来正确放置它们。

    【讨论】:

    • viewWillAppear 给了我一个 0 的大小,但 viewDidAppear 给了我真正的大小。
    • 谢谢!自动布局是问题所在。现在实际大小显示在 viewDidLoad 和 viewWillAppear 以及其他所有内容中。我得学习一下这个自动布局的东西。
    【解决方案2】:

    试试这个:

    NSLog(@"Label Frame: %@",NSStringFromCGRect(self.label.frame));
    

    【讨论】:

    • 您确定在Interface Builder中连接了标签吗?
    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 2013-07-11
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    相关资源
    最近更新 更多