首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法获取UIVew大小

无法获取UIVew大小
EN

Stack Overflow用户
提问于 2018-07-01 04:29:44
回答 2查看 51关注 0票数 0

我在代码中动态添加UIViews。有很多我想添加的视图。下面是一个示例:

代码语言:javascript
复制
let typeImage = UIImageView()
typeImage.translatesAutoresizingMaskIntoConstraints = false
rootView.addSubview(typeImage)
typeImage.widthAnchor.constraint(equalToConstant: 28).isActive = true
typeImage.heightAnchor.constraint(equalToConstant: 28).isActive = true
typeImage.leftAnchor.constraint(equalTo: rootView.leftAnchor, constant: 4).isActive = true
typeImage.topAnchor.constraint(equalTo: rootView.topAnchor, constant: 4).isActive = true
typeImage.backgroundColor = gh.myRed
typeImage.image = UIImage(named: "ic_question_bej")

我想要计算我添加的所有元素的总和,并最终将这个计数值设置为我的根视图高度。问题是

代码语言:javascript
复制
typeImage.frame.size.height
typeImage.bounds.size.height

始终返回0.0

那么如何通过代码获取新增UIView的CGFloat中的高度呢?也许我应该设置根视图的高度,以另一种方式包装我所有的子视图?

编辑

Xcode加载视图会有一些延迟,如果你试图在将视图添加到parent之后立即获取视图大小,你会得到0.0大小。

在检查大小之前,您必须调用yourCustomView.layoutIfNeeded()

感谢Chenjtc的正确答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-01 08:52:22

您可以像这样在代码前添加代码:typeImage.layoutIfNeeded()

typeImage.frame.size.height typeImage.bounds.size.height约束不会立即布局,应使用layoutIfNeeded对视图进行布局,然后才能获得该框架

票数 1
EN

Stack Overflow用户

发布于 2018-07-01 04:33:01

如果你想在CGFloat中计算多个视图的高度之和,你可以这样做:

代码语言:javascript
复制
let viewHeight = self.view.frame.height  //this in CGFloat
let sumHeight = viewHeight + ... other UIViews
print(sumHeight) // 568.0 for iPhone SE

或者,如果您想设置新的UIView高度,可以通过更改以下内容来实现:

代码语言:javascript
复制
typeImage.heightAnchor.constraint(equalToConstant: 28).isActive = true

//

至:

代码语言:javascript
复制
typeImage.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 1).isActive = true
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51118259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档