[这是一个简单的例子,我可以找到a previous question.我试图弄清楚为什么故事板中的场景的子视图不像我期望的那样表现,也就是说:像XIB一样 – 我只是想得到实际绘制到屏幕之前我的子视图的尺寸]
为了将问题压缩到一个新的,干净的项目,我这样做:
>选中“使用Storyboard”创建一个新的单一视图项目
>将单个UIVIEw添加到默认的现有MainStoryboard_iPad.storyboard(并将其背景更改为绿色以使其更容易看到 – 除了缩小尺寸之外,这是我从默认的UIVIEw中拖动到场景中的唯一更改)
>选项 – 单击导航器中的VIEwController.h文件,将其放在Storyboard框架下面的自己的框架中,并在@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需要的方法.
解决方法 在调用layoutSubvIEws时计算并设置这些维度,这发生在vIEwWillAppear之后.在UIVIEw上调用layoutSubvIEws后,您可以获取尺寸.看看在视图控制器中实现此方法:vIEwDIDLayoutSubvIEws.此时,您应该能够获得子视图的尺寸.请注意,此调用从iOS 5.0开始可用,但由于您参考故事板,我认为您无论如何都在或高于此工作.
- (voID)vIEwDIDLayoutSubvIEws{ [super vIEwDIDLayoutSubvIEws]; NSLog(@"VIEw Controller dID layout subvIEws. firstVIEwFirstSubVIEw: %@ ",firstVIEwFirstSubVIEw.frame.origin.y);}总结
以上是内存溢出为你收集整理的ios – 在Storyboard中获取子视图的框架全部内容,希望文章能够帮你解决ios – 在Storyboard中获取子视图的框架所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)