使用具有自动布局和约束的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),这显然不正确,因为它们的大小不同。
答案 0 :(得分:0)
我通常为视图制作一个插座,这样可以更容易地获取参数,例如在您的界面中创建一个IBOutlet并连接到您的视图
IBOutlet UIView *outletYourView
以及您需要信息呼叫的地方
outletYourView.frame.size.width;
outletYourView.frame.size.height;
等