【发布时间】:2017-08-10 04:09:43
【问题描述】:
我有一个来自班级的视图,我想将角半径设置为宽度的一半。
宽度是使用自动布局生成的计算属性。所以通常我会像这样在viewWillLayoutSubviews() 中设置圆角半径属性
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
c.largeProfileImage.layer.cornerRadius = c.largeProfileImage.frame.width / 2
}
但 largeProfileImage 不是在 viewdidLoad 之后调用的初始视图,我通过点击手势对其进行动画处理。下面是视图在屏幕上动画的位置。它是在同一个函数中创建的。
//I tried setting the cornerRadius here as well but it isn't setting.
//c.largeProfileImage.layer.cornerRadius = c.largeProfileImage.frame.width / 2
self.view.layoutIfNeeded()
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: .curveEaseOut, animations: {
self.profileImageContainerCenterY?.constant = -(c.profileImageContainer.frame.height) * 2
self.profileSettingsContainerCenterY?.constant = 0
c.profileSettingsContainer.alpha = 1
c.largeProfileImage.alpha = 1
self.view.layoutIfNeeded()
}, completion: { (completed) in
self.view.layoutIfNeeded()
})
编辑:
这是个人资料图片
let largeProfileImage: UIImageView = {
let pv = UIImageView()
pv.contentMode = .scaleAspectFill
pv.layer.masksToBounds = true
pv.clipsToBounds = true
pv.image = UIImage(named: "user")
pv.translatesAutoresizingMaskIntoConstraints = false
return pv
}()
【问题讨论】:
-
从类视图添加视图是在声明类的同一控制器上?或者在控制器 A 中添加类以及从控制器 A 到控制器 B 的类视图?
-
你试过在 viewDidLayoutSubviews 方法中添加cornerRadius吗?请在这个方法中尝试,可能会有助于在所有视图布局后设置cornerRadius
-
你需要添加
largeProfileImage.layer.masksToBounds = false和largeProfileImage.clipsToBounds = true