获取容器内视图的实际大小

时间:2013-11-26 08:14:47

标签: ios iphone objective-c uiviewcontroller

使用具有自动布局和约束的Storyboard编辑器,我创建了一个带有UIViewController(1)的层次结构,其中有一个Container(2),其中嵌入了UIViewcontroller(3)。

将嵌入式UIViewController(3)的背景颜色设置为与(1)不同的颜色,这表明正在强制执行约束:在视觉上,它似乎具有我在故事板编辑器中所期望的大小,在模拟器和我的设备。

但我无法从代码中获取UIViewController(3)的大小,我尝试访问UIViewControllers(3)视图框架和边界,两者都有不正确的结果,它们似乎返回与主机大小相同的大小UIViewController(1),这显然是错误的,因为曾经确实嵌入了另一个。

我也试过访问self.parentViewController.view框架和边界,但这些都返回0.0。

在嵌入式UIViewController(3)中:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"Size: %f x %f", self.view.frame.size.width, self.view.frame.size.height);
    NSLog(@"Origin: %f x %f", self.view.frame.origin.x, self.view.frame.origin.y);
}

我希望它的输出类似于宽高比,UIViewController(3)的实际可见大小,但它实际上等于我从UIViewController中输入相同代码所获得的内容。 (1),这显然不正确,因为它们的大小不同。

1 个答案:

答案 0 :(得分:0)

我通常为视图制作一个插座,这样可以更容易地获取参数,例如在您的界面中创建一个IBOutlet并连接到您的视图

IBOutlet UIView *outletYourView

以及您需要信息呼叫的地方

outletYourView.frame.size.width;
outletYourView.frame.size.height;