私はクラスから来たビューを持っていて、そのコーナーの半径をその半分の幅に設定したいと思います。ビューのロード後にコーナーの半径を設定する
幅は、autolayoutを使用して作成された計算されたプロパティです。だから、通常私はそう
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
c.largeProfileImage.layer.cornerRadius = c.largeProfileImage.frame.width/2
}
ようviewWillLayoutSubviews()
コーナーradiusプロパティを設定すると思います。しかし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()
})
EDIT:
ここprofileImage
だ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のビューをコントローラBに追加しますか? –
viewDidLayoutSubviewsメソッド内でcornerRadiusを追加しようとしましたか?このビューで試してください。すべてのビューが配置された後にcornerRadiusを設定すると役に立つかもしれません – 3stud1ant3
'largeProfileImage.layer.masksToBounds = false'と' largeProfileImage .clipsToBounds = true' – Annjawn