2017-11-06 6 views
0

私は自動レイアウトに基づいて適応サイズを持っている円形ビューを作成しようとしていますが、現在は制約を設定してから、viewwilllayoutsubviewsメソッドでイメージを丸めます。Autolayout(スナップキット)を使用した円形ビュー?

これは、円形ではない奇妙な形のビューになります。どうすればこの問題を解決できますか?

INIT:

profilePic = UIImageView(frame: CGRect.zero) 
    profilePic.clipsToBounds = true 
    profilePic.contentMode = .scaleAspectFill 

が制約:

profilePic.snp.makeConstraints { (make) -> Void in 
       make.centerX.equalTo(self).multipliedBy(0.80) 
       make.centerY.equalTo(self).multipliedBy(0.40) 
       make.size.equalTo(self).multipliedBy(0.22) 
      } 

サブビュー:

override func viewWillLayoutSubviews() { 
     self.navigationMenuView.profilePic.layer.cornerRadius = self.navigationMenuView.profilePic.frame.size.width/2.0 
     self.navigationMenuView.profilePic.layer.borderWidth = 2 
     self.navigationMenuView.profilePic.layer.borderColor = UIColor.white.cgColor 
    } 

結果:

enter image description here

+0

imageViewにもう1つの「アスペクト比」を1:1に追加してみてください。サークルが必要な場合は、正方形のimageViewが必要です。 –

答えて

0

私はあなたがこれをしたいと思います(プレーン自動レイアウトのため申し訳ありませんが、私はsnapkitを使用しません):この代わりの

profilePic.heightAnchor.constraint(equalTo: profilePic.widthAnchor).isActive = true 
profilePic.widthAnchor.constraint(equalTo: self.view.widthAnchor, multiplier: 0.22).isActive = true 

make.size.equalTo(self).multipliedBy(0.22) 
+0

ありがとうございましたこれを解決するように見えました – jackdm

0

ここに私の提案は扱いませんさそれはそれの外側から円形の眺めが好きです。ビュー自体を円に合わせて、どこでも使用できるようにします。ビューINSIDE

widthAnchor.constraint(equalTo: heightAnchor).isActive = true 

これは、正方形(未定サイズで)それを作るだろう...それをのような制約を与えます。機能layoutSubviewsで次に

...

override func layoutSubviews() { 
    super layoutSubviews() 

    layer.cornerRadius = bounds.size.width * 0.5 
} 

これは円形に、正方形を行います。

+0

これはコードが既に何をしているのですか?私は制約の中でそれを四角形にし、サブビュー – jackdm

+0

@jackdmでラウンドしますが、それでもビューコントローラでは四角形であると言っています。ビュー自体を正方形にすることは理にかなっています。また、私はスナップキットの使用に疑問を呈します。自動レイアウトは本当に難しいことではありません。私はそれを落とし、ちょうどオートレイアウトを学ぶことをお勧めしたい。 – Fogmeister

関連する問題