Swift iOS Playgroundで角の丸いUIImageViewを作成するにはどうすればよいですか?
内部には色を塗る必要があります。
let imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100))
imageView.backgroundColor = UIColor.redColor()
imageView.layer.cornerRadius = 8.0
imageView.clipsToBounds = true
結果:
Swiftの丸い円の画像フレームの場合、それが私にとってうまくいったのは:
self.profileImageView.image = UIImage(named:"profileUser")
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true
そして、影を追加するには:
self.profileImageView.layer.masksToBounds = NO;
self.profileImageView.layer.cornerRadius = 8;
self.profileImageView.shadowOffset = CGSizeMake(5.0, 5.0);
self.profileImageView.shadowRadius = 5;
self.profileImageView.shadowOpacity = 0.5;
これを試して、それは私のために働いた。
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true
半径とマスクを境界に設定する各UIViewを書くのにうんざりしていました。そこで、UIViewについて次の拡張を行いました。私はそれをテストしていませんが、すべてのUIViewサブクラスで動作するはずです。もちろん、使用する特定のビューに対して拡張機能を絞り込むことができます。
extension UIView {
func setRadius(radius: CGFloat? = nil) {
self.layer.cornerRadius = radius ?? self.frame.width / 2;
self.layer.masksToBounds = true;
}
}
特定の値を渡さない場合、デフォルトでビューの半分の幅になります。
各UIImageView
を丸めるオプションが必要な場合は、clip to bounds
を確認し、その値をtrue
に設定することを忘れずに、このコードをプロジェクトにコピーできます。
import UIKit
@IBDesignable
extension UIImageView
{
private struct AssociatedKey
{
static var rounded = "UIImageView.rounded"
}
@IBInspectable var rounded: Bool
{
get
{
if let rounded = objc_getAssociatedObject(self, &AssociatedKey.rounded) as? Bool
{
return rounded
}
else
{
return false
}
}
set
{
objc_setAssociatedObject(self, &AssociatedKey.rounded, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
layer.cornerRadius = CGFloat(newValue ? 1.0 : 0.0)*min(bounds.width, bounds.height)/2
}
}
}
Swift 5.0:
私の個人的な好みは、このような特定の変更のために追加のSwiftファイルを持つことです。次に、クラスを作成します。 「RoundCorner」は、この場合はView要素に変更したい要素のサブクラスです。そして、個々の設定をオーバーライドしています。
class RoundCorner: UIView {
override func draw(_ rect: CGRect) {
self.layer.cornerRadius = 10 // change this number to get the corners you want
self.layer.masksToBounds = true
}
}
その後、この変更を行う要素を選択し、カスタムクラスを前に作成したクラスに設定するだけです。
設定layer.cornerRadius = 1 at ユーザー定義のランタイム属性 Identityインスペクターのセクションは、テーブルセルのような繰り返し可能な要素でも機能します。