iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在Storyboard中获取子视图的框架大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我只想(现在)在视图控制器的实例化中获取子视图的尺寸. [这是一个简单的例子,我可以找到a previous question.我试图弄清楚为什么故事板中的场景的子视图不像我期望的那样表现,也就是说:像XIB一样 – 我只是想得到实际绘制到屏幕之前我的子视图的尺寸] 为了将问题压缩到@R_607_10062@,干净的项目,我这样做: >选中“使用Storyboard”创建@R_607_10062@单一视图项目 >将单个UIView添
我只想(现在)在视图控制器的实例化中获取子视图的尺寸.

[这是一个简单的例子,我可以找到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中获取子视图的框架所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。