我只想(现在)在视图控制器的实例化上获取子视图的尺寸。
[这是我能找到的上一个问题的简单案例。我试图弄清楚为什么 Storyboards 中场景的子视图的行为不符合我的预期,也就是说:就像 XIB 一样 - 我只想在实际绘制到屏幕上之前获取子视图的尺寸]
为了将问题浓缩为一个新的、干净的项目,我这样做:
- 创建一个新的单视图项目,选中“使用情节提要”
- 将单个 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 需要的方法。