【发布时间】:2012-11-15 21:31:11
【问题描述】:
我只想(目前)在视图控制器的实例化中获取子视图的尺寸。
[这是我能找到的a previous question 的简单案例。我试图弄清楚为什么 Storyboards 中场景的子视图没有按我预期的方式运行,也就是说:就像 XIB 一样 - 我只想在实际绘制到屏幕之前获取子视图的尺寸]
为了将问题浓缩为一个新的、干净的项目,我这样做:
- 创建一个新的单视图项目并选中“使用 Storyboard”
- 将单个 UIView 添加到默认现有
MainStoryboard_iPad.storyboard(并将其背景更改为绿色以使其更容易看到 - 除了缩小一些尺寸之外,这是我对拖到场景中的默认 UIView 所做的唯一更改) - 选项-单击导航器中的
ViewController.h文件以将其显示在故事板框架下方的自己的框架中,并在@interface指令下方插入一对大括号 - 从 Storyboard 中的 UIView 控制单击并拖动到
ViewController.h并告诉它命名插座firstViewFirstSubView
所以我们现在有ViewController.h:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
{
IBOutlet UIView *firstViewFirstSubView;
}
@end
然后,我将这个方法添加到 ViewController.m:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"View Controller will appear. firstViewFirstSubView: %@ ", firstViewFirstSubView);
NSLog(@"subView's dimmensions: %f by %f at %f, %f", firstViewFirstSubView.frame.size.width,
firstViewFirstSubView.frame.size.height,
firstViewFirstSubView.frame.origin.x,
firstViewFirstSubView.frame.origin.y);
}
此时,我希望能够获得 UIView 子视图的尺寸。不过,我全是 0:
2012-11-15 15:21:00.743 StoryboardViewBounds[11132:c07] View Controller will appear. firstViewFirstSubView: <UIView: 0x9379730; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x9378e40>>
2012-11-15 15:21:00.744 StoryboardViewBounds[11132:c07] subView's dimmensions: 0.000000 by 0.000000 at 0.000000, 0.000000
我做错了什么?看起来这应该很简单,所以我想我一定错过了一些简单的东西,无论是在 Storyboard 编辑器中抛出正确的开关还是实现 Storyboard 需要的方法。
【问题讨论】:
标签: ios xcode uistoryboard