【问题标题】:IOS6 - getting IBoutlet's frame from viewDidLoad returns 0IOS6 - 从 viewDidLoad 获取 IBoutlet 的框架返回 0
【发布时间】:2013-03-26 09:55:49
【问题描述】:

我正在使用 Autolayout 制作情节提要。我有一个 viewController(即 myController),并在其中拖入了一个 UIView(即 myView)。 在 myController.h 我为 myView 声明了一个 IBOutlet:

@property (weak, nonatomic) IBOutlet UIView *myview;

后来我通过故事板将它与我的 UI 相关联(从 myController 的出口按 ctrl+dradding)。

关键是我以为我可以从myController viewDidLoad 方法中看到myView 的大小:

NSLog(@"pag h:%f e w:%f",myView.frame.size.height, myview.frame.size.width);

但是这两个输出都是 0。我哪里可能错了?

【问题讨论】:

  • 检查一下您的 IBOutlet 连接?

标签: objective-c uiview autolayout viewdidload iboutlet


【解决方案1】:

如果你使用自动布局,那么在 viewDidLoad 布局还没有发生。当从情节提要加载视图时,此时的帧仍然等于 CGRectZero。

在 viewDidAppear: 中再次记录此内容,您将在布局完成后看到框架。

【讨论】:

  • 我在 myView 中放置了一个 Scrollview,为它们提供了完全相同的帧(这次来自 viewDidAppear: 方法)。 scrollView 看起来像沿着 y 轴向下移动了 20 点。您认为问题仍然与自动布局有关吗? @Firoze Lafeer
  • 如果您在情节提要中使用自动布局,那么您也应该对滚动视图使用自动布局。只需添加具有适当约束的滚动视图。或者考虑不在情节提要中使用自动布局,具体取决于您的设计。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
相关资源
最近更新 更多