我正在屏幕上使此个人资料视图变为圆形。但是我没有从imageView.frame.height
得到高度或宽度来在layer.cornerRadius
中使用它。请帮我。谢谢。
这里是参考代码。
private func addImageView() {
topView.addSubview(profilePicView)
NSLayoutConstraint.activate([
profilePicView.centerXAnchor.constraint(equalTo: topView.centerXAnchor),
profilePicView.widthAnchor.constraint(equalTo: topView.heightAnchor, multiplier: 0.3)
])
profilePicViewTopAnchor = profilePicView.topAnchor.constraint(equalTo: view.topAnchor, constant: 64)
profilePicViewTopAnchor?.isActive = true
profilePicViewHeightAnchor = profilePicView.heightAnchor.constraint(equalTo: topView.heightAnchor, multiplier: 0.3)
profilePicViewHeightAnchor?.isActive = true
}
我正在尝试获取值,
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print((profilePicViewHeightAnchor?.constant)!)
profilePicView.layer.cornerRadius = (profilePicViewHeightAnchor?.constant)! / 2
profilePicView.clipsToBounds = true
}
已解决
在所有人的帮助下,我得到了这个解决方案,该解决方案对我来说非常合适,
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let radius = redView.frame.height * 0.3
profilePicView.layer.cornerRadius = radius / 2
profilePicView.clipsToBounds = true
self.view.layoutIfNeeded()
}
谢谢大家。非常感谢您的帮助。
答案 0 :(得分:4)
这必须是因为访问startUpload(): void {
const event: UploadInput = {
type: 'uploadAll',
url: 'server path'
method: 'POST',
headers: 'custom header',
file: this.croppedImage,
};
this.uploadInput.emit(event);
}
的{{1}}时,frame
并未布局约束。因此,如果您的imageView
在autolayout
类中,则应该imageView
使用下面的方法,然后访问UIViewController
和override
。
width
如果height
在自定义视图中,则可以override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print(imageView.frame.height)
}
使用以下方法,然后访问imageView
,
override
答案 1 :(得分:0)
请尝试此操作对您有帮助。
imageView.layer.cornerRadius = imageView.frame.size.height / 2
imageView.clipsToBounds = true
确保imageView的高度和宽度相同。谢谢
答案 2 :(得分:0)
答案 3 :(得分:0)
您还可以使用ViewDidAppear。因为此时自动布局引擎开始布局约束。
override func viewDidAppear() {
super.viewDidAppear()
print(imageView.frame.height)
}
答案 4 :(得分:-1)
尝试此扩展程序:
UICollectionViewCell