web-dev-qa-db-ja.com

Swift 4の角丸UIView

In Swift 3

import UIKit

@IBDesignable
class DesignableView: UIView {
}

extension UIView {

    @IBInspectable
    var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
        }
    }
}

そして、ストーリーボードでこれを簡単に変更できました: properties

現在、Designableで「Build failed」が表示されていますが、Idkはなぜですか。私はSwift 4およびXcode 9に取り組んでいます。

なぜSwift 4で動作しないのですか?

8

あなたのコードを試してみましたが、iOS 11.1およびSwift 4.0で問題なく動作しています。

@IBDesignable
class RoundUIView: UIView {

    @IBInspectable var borderColor: UIColor = UIColor.white {
        didSet {
            self.layer.borderColor = borderColor.cgColor
        }
    }

    @IBInspectable var borderWidth: CGFloat = 2.0 {
        didSet {
            self.layer.borderWidth = borderWidth
        }
    }

    @IBInspectable var cornerRadius: CGFloat = 0.0 {
        didSet {
            self.layer.cornerRadius = cornerRadius
        }
    }

}

結果はこちら

enter image description here


更新:
更新されたコードでも問題なく動作します。

@IBDesignable
class DesignableView: UIView {
}

extension UIView {

    @IBInspectable
    var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
        }
    }
}

結果は次のとおりです。

enter image description here

25
Krunal

スイフト

public func RoundFrameBackground(_ aView: UIView!, borderWidth: CGFloat!, cornerRadius: CGFloat!, borderColor: UIColor, backgroundColor: UIColor) {
    aView.layer.borderWidth = borderWidth ; aView.layer.borderColor = borderColor.cgColor
    aView.backgroundColor = backgroundColor ; aView.clipsToBounds = true
    aView.layer.cornerRadius = cornerRadius
}

public func RoundFrameOnly(_ aView: UIView!, cornerRadius: CGFloat!) {
    aView.clipsToBounds = true
    aView.layer.cornerRadius = cornerRadius
}

使用する:

RoundFrameBackground(*a view*, borderWidth: 1, cornerRadius: 10, borderColor: UIColor.red, backgroundColor: UIColor.blue)

RoundFrameOnly(*a view*, cornerRadius: 10)
0
iOS Flow

コードはSwift 4.0では新しいプロジェクトで正常に動作します。ただし、 Storyboardを使用してLaunchScreenとして設定している場合は、そこで直接カスタムクラスを使用できます

その場合は、起動画面として使用するのチェックを外すだけで、再度ビルドできるようになります。

enter image description here

0
jvrmed