194

UIViewの境界線のプロパティ(色、太さなど)をInterface Builderから直接制御することは可能ですか、それともプログラムでしか実行できませんか?

4

9 に答える 9

401

実際には、インターフェイス ビルダーを介してビューのレイヤーのいくつかのプロパティを設定できます。xcode を使用してレイヤーの borderWidth と cornerRadius を設定できることを知っています。おそらくレイヤーが UIColor ではなく CGColor を必要とするため、borderColor は機能しません。

数値の代わりに文字列を使用する必要があるかもしれませんが、うまくいきます!

layer.cornerRadius
layer.borderWidth
layer.borderColor

更新: layer.masksToBounds = true

例

更新: キーパスに適切なタイプを選択します:

ここに画像の説明を入力

于 2013-04-05T17:28:03.380 に答える
93

iHulkのものと同様の答えですが、Swiftで

プロジェクトに UIView.swift という名前のファイルを追加します (または、これを任意のファイルに貼り付けます)。

import UIKit

@IBDesignable extension UIView {
    @IBInspectable var borderColor: UIColor? {
        set {
            layer.borderColor = newValue?.cgColor
        }
        get {
            guard let color = layer.borderColor else {
                return nil
            }
            return UIColor(cgColor: color)
        }
    }
    @IBInspectable var borderWidth: CGFloat {
        set {
            layer.borderWidth = newValue
        }
        get {
            return layer.borderWidth
        }
    }
    @IBInspectable var cornerRadius: CGFloat {
        set {
            layer.cornerRadius = newValue
            clipsToBounds = newValue > 0
        }
        get {
            return layer.cornerRadius
        }
    }
}

次に、これは、Utilities Panel > Attributes Inspector のすべてのボタン、imageView、ラベルなどの Interface Builder で使用できるようになります。

属性インスペクター

注: 境界線は実行時にのみ表示されます。

于 2016-02-12T21:38:37.207 に答える
57

UIView のカテゴリを作成し、これをカテゴリの .h ファイルに追加できます

@property (nonatomic) IBInspectable UIColor *borderColor;
@property (nonatomic) IBInspectable CGFloat borderWidth;
@property (nonatomic) IBInspectable CGFloat cornerRadius;

これを.mファイルに追加します

@dynamic borderColor,borderWidth,cornerRadius;

これも . mファイル

-(void)setBorderColor:(UIColor *)borderColor{
    [self.layer setBorderColor:borderColor.CGColor];
}

-(void)setBorderWidth:(CGFloat)borderWidth{
    [self.layer setBorderWidth:borderWidth];
}

-(void)setCornerRadius:(CGFloat)cornerRadius{
    [self.layer setCornerRadius:cornerRadius];
}

これで、すべての UIView サブクラス (UILabel、UITextField、UIImageView など) のストーリーボードに表示されます。

ここに画像の説明を入力

それだけです.. カテゴリをどこにでもインポートする必要はありません。カテゴリのファイルをプロジェクトに追加するだけで、ストーリーボードでこれらのプロパティを確認できます。

于 2015-05-20T11:13:33.713 に答える
7

これによりプロパティが設定される可能性がありますが、実際には IB には反映されません。したがって、本質的に IB でコードを書いている場合は、ソース コードでそれを行うこともできます。

于 2013-05-28T08:06:12.233 に答える
-5

次の 2 行の簡単なコードを追加してください。

self.YourViewName.layer.cornerRadius = 15
self.YourViewName.layer.masksToBounds = true

それはうまくいきます。

于 2018-02-06T06:45:43.437 に答える