【发布时间】:2015-01-19 09:06:38
【问题描述】:
在 ViewController 启动时,我需要在其他 (A) 中获取 UIView (B) 的宽度(在我附加的图像中,B 是所选的 UIView,父级 (A) 是 UIView带白色边框)。我正在使用自动布局,因此 UIView (B) 的父级 (A) 具有尾随和前导空间
我正在尝试获取 viewDidLayoutSubview 中的实际宽度:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
NSLog(@"Layout %f --- %f --- %f ",self.oksPanel.frame.size.width,self.oksBar.frame.size.width);
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
//code to be executed on the main queue after delay
NSLog(@"Layout %f --- %f --- %f ",self.oksPanel.frame.size.width,self.oksBar.frame.size.width);
});
}
oksPanel 是父 UIView (A),oksBar 是子 UIView (B)。第一个 NSLog 打印以下内容:
Layout 538.000000 --- 378.000000
第一个数字是可以的,但第二个是Interface Builder中子UIView的宽度,不是在设置约束之后。但是,当延迟的代码被执行时,我得到了正确的数字:
Layout 538.000000 --- 508.000000
为了获得子 UIView 的正确尺寸,我必须调用什么委托方法?
谢谢。
【问题讨论】:
-
你试过 viewDidAppear 吗?
-
是的,我也试过了
标签: ios uiviewcontroller ios8 autolayout nslayoutconstraint