web-dev-qa-db-ja.com

角が丸いUIImage / -Viewを作成する方法CGRect(Swift)

Swift iOS Playgroundで角の丸いUIImageViewを作成するにはどうすればよいですか?
内部には色を塗る必要があります。

56
Thomas
let imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100))
imageView.backgroundColor = UIColor.redColor()
imageView.layer.cornerRadius = 8.0
imageView.clipsToBounds = true

結果:

enter image description here

160
Mundi

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
20
Ronaldoh1

半径とマスクを境界に設定する各UIViewを書くのにうんざりしていました。そこで、UIViewについて次の拡張を行いました。私はそれをテストしていませんが、すべてのUIViewサブクラスで動作するはずです。もちろん、使用する特定のビューに対して拡張機能を絞り込むことができます。

extension UIView {      
    func setRadius(radius: CGFloat? = nil) {
        self.layer.cornerRadius = radius ?? self.frame.width / 2;
        self.layer.masksToBounds = true;
    }
}

特定の値を渡さない場合、デフォルトでビューの半分の幅になります。

14
Evdzhan Mustafa

Swift 3.0、4.0

ストーリーボードを使用する場合。これを適用し、「境界にクリップ」が有効になっていることを確認します。

enter image description here

6
A. Trejo

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
        }
    }
}

screenshot

3
Mendy Barouk

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
    }
}

その後、この変更を行う要素を選択し、カスタムクラスを前に作成したクラスに設定するだけです。

こちらのスクリーンショットをご覧ください

1
Panagiotis D.

設定layer.cornerRadius = 1 at ユーザー定義のランタイム属性 Identityインスペクターのセクションは、テーブルセルのような繰り返し可能な要素でも機能します。

1
Daniel Miranda