UIView 使用自动布局调整大小,但在运行时获取其帧大小不正确 ios

Posted

技术标签:

【中文标题】UIView 使用自动布局调整大小,但在运行时获取其帧大小不正确 ios【英文标题】:UIView is resized using auto layout but getting its frame size on runtime is not correct ios 【发布时间】:2014-12-03 12:01:31 【问题描述】:

当我放置框架大小的视图 (0.0,0.0,320.0,435.0) 应用自动布局时,它在 iphone 5(4 英寸)中显示正确,当我在 iphone 4s 中运行时,由于自动布局,它显示正确,但是当我获取其框架的值时在运行时执行后出现"(0.0,0.0,320.0,435.0)" 在 iphone 4s 中应用自动布局后,我无法获得有变化的尺寸? 我想获取大小,因为使用该大小我可以以编程方式设置创建的自定义视图的大小。

【问题讨论】:

您在什么时候尝试读取框架?这可能是因为在打印其框架时视图尚未布局。 @liamnichols 我试图进入视图确实加载了,因为我想根据获得的框架大小设置自定义视图的大小。 尝试在视图中添加代码会出现..并检查它是否工作 【参考方案1】:

在“获取实际尺寸代码”之前,插入以下代码:

yourView.setNeedsLayout()
yourView.layoutIfNeeded()

【讨论】:

【参考方案2】:

我认为自动布局在您调用它时还没有时间布局您的视图。调用 viewDidLoad 时自动布局还没有发生,因为它是在视图加载后调用的,并且只有在此之后视图才被放置到视图控制器的视图层次结构中并最终布局(在视图的 layoutSubviews 方法中)。

试试这个代码

        //delegate method
      - (void) viewDidLayoutSubviews
       
            NSLog(@"height=%f",self.myview.frame.size.height);
       

【讨论】:

以上是关于UIView 使用自动布局调整大小,但在运行时获取其帧大小不正确 ios的主要内容,如果未能解决你的问题,请参考以下文章

使用带有修复底部 UIView 的自动布局调整 UIView 的大小

UIView 使用约束自动布局居中和调整大小

使用自动布局调整 UIView 大小并更新内容

调整 UIView 的大小以在关闭自动布局的情况下包装其内容

使用固定大小的子视图和自动布局调整 UIView 的大小不起作用

UITableView 在旋转时使用自动布局调整大小