从 NSLayoutConstraint 获取高度值
get Height Value from NSLayoutConstraint
在我的项目中,我使用的是AutoLayOut,有一个UIView 是subView 主视图,我将它的宽度(使用约束)设置为等于2 :3 superView 的宽度和它的高度等于它的视图。我需要视图是圆形的,所以我将它的 cornerRadius 设置为 heightOfView/2。视图的高度和宽度有 1:1 纵横比。我已经将该约束的出口创建为
@IBOutlet weak var circleHeight: NSLayoutConstraint
现在我想访问它的高度或宽度,但我没有 gwtting 实际值,
circleHeight.firstItem.frame.width
我正在获取我从情节提要中存储的值,有一些我遗漏但无法弄清楚的东西
选定的视图应该是圆形的。但是当我打印它的包含值时,它给出的高度和宽度仅为 214
约束没有高度或宽度,只有关系、优先级和常量值,具体取决于您如何设置约束本身。
要访问您感兴趣的子视图的高度,您需要像往常一样访问:
<uiview_outlet>.frame.size.height
希望对您有所帮助。
你可以为这个UIView创建IBOutlet,它应该是圆形的。
然后在 viewDidLayoutSubviews() 方法中你可以读取它的高度并使它成为圆圈:
override func viewDidLayoutSubviews() {
let viewHeight = CGRectGetHeight(yourView.frame)
yourView.layer.cornerRadius = viewHeight / 2
yourView.layer.masksToBounds = true
}
- 我认为您可能在
viewWillAppear
或
ViewDidLoad
但是当这些方法被获取时视图框架不会被更新
叫
- 所以你需要在
ViewDidAppear
方法中获取宽度或高度。
- 如果得到
ViewDidLayoutSubViews
中的高度或宽度,性能
被多次调用后性能下降。
这是代码
override func viewDidAppear(animated: Bool){
super.viewDidAppear(animated)
let viewHeight = CGRectGetHeight(yourView.frame)
yourView.layer.cornerRadius = viewHeight / 2
yourView.layer.masksToBounds = true
}
在我的项目中,我使用的是AutoLayOut,有一个UIView 是subView 主视图,我将它的宽度(使用约束)设置为等于2 :3 superView 的宽度和它的高度等于它的视图。我需要视图是圆形的,所以我将它的 cornerRadius 设置为 heightOfView/2。视图的高度和宽度有 1:1 纵横比。我已经将该约束的出口创建为
@IBOutlet weak var circleHeight: NSLayoutConstraint
现在我想访问它的高度或宽度,但我没有 gwtting 实际值,
circleHeight.firstItem.frame.width
我正在获取我从情节提要中存储的值,有一些我遗漏但无法弄清楚的东西
约束没有高度或宽度,只有关系、优先级和常量值,具体取决于您如何设置约束本身。
要访问您感兴趣的子视图的高度,您需要像往常一样访问:
<uiview_outlet>.frame.size.height
希望对您有所帮助。
你可以为这个UIView创建IBOutlet,它应该是圆形的。 然后在 viewDidLayoutSubviews() 方法中你可以读取它的高度并使它成为圆圈:
override func viewDidLayoutSubviews() {
let viewHeight = CGRectGetHeight(yourView.frame)
yourView.layer.cornerRadius = viewHeight / 2
yourView.layer.masksToBounds = true
}
- 我认为您可能在
viewWillAppear
或ViewDidLoad
但是当这些方法被获取时视图框架不会被更新 叫 - 所以你需要在
ViewDidAppear
方法中获取宽度或高度。 - 如果得到
ViewDidLayoutSubViews
中的高度或宽度,性能 被多次调用后性能下降。
这是代码
override func viewDidAppear(animated: Bool){
super.viewDidAppear(animated)
let viewHeight = CGRectGetHeight(yourView.frame)
yourView.layer.cornerRadius = viewHeight / 2
yourView.layer.masksToBounds = true
}