ios – 在Storyboard中获取子视图的框架
我只想(现在)在视图控制器的实例化中获取子视图的尺寸.
[这是一个简单的例子,我可以找到a previous question.我试图弄清楚为什么故事板中的场景的子视图不像我期望的那样表现,也就是说:像XIB一样 – 我只是想得到实际绘制到屏幕之前我的子视图的尺寸] 为了将问题压缩到一个新的,干净的项目,我这样做: >选中“使用Storyboard”创建一个新的单一视图项目 所以我们现在有了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需要的方法. 解决方法
在调用layoutSubviews时计算并设置这些维度,这发生在viewWillAppear之后.在UIVIew上调用layoutSubviews后,您可以获取尺寸.
看看在视图控制器中实现此方法:viewDidLayoutSubviews.此时,您应该能够获得子视图的尺寸.请注意,此调用从iOS 5.0开始可用,但由于您参考故事板,我认为您无论如何都在或高于此工作. - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; NSLog(@"View Controller did layout subviews. firstViewFirstSubView: %@ ",firstViewFirstSubView.frame.origin.y); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |