2013-12-09 12 views

答えて

72

キーパスを使用できます。

たとえば、画像に記載されているコーナーの半径(layer.cornerRadius)。 ストーリーボードで効果を見ることができません。このパラメーターは実行時に評価されるためです。今あなたがカテゴリを使用している場合、キーのパスとしてのみcornerRadiusないlayer.cornerRadiusを使用し、(ストーリーボードで結果を表示するために@IBInspectableでUIViewの中SWIFTカテゴリ(画像怒鳴るコード)を使用することができます。

enter image description hereここで


extension UIView { 
    @IBInspectable var cornerRadius: CGFloat { 
     get { 
      return layer.cornerRadius 
     } 
     set { 
      layer.cornerRadius = newValue 
      layer.masksToBounds = newValue > 0 
     } 
    } 
} 

使用キーパスlayer.borderUIColorは、境界線の色を設定することができPeter DeWeese答えからカテゴリです。

のCALayer + XibConfiguration.h:

#import <QuartzCore/QuartzCore.h> 
#import <UIKit/UIKit.h> 

@interface CALayer(XibConfiguration) 

// This assigns a CGColor to borderColor. 
@property(nonatomic, assign) UIColor* borderUIColor; 

@end 

のCALayer + XibConfiguration.m:

#import "CALayer+XibConfiguration.h" 

@implementation CALayer(XibConfiguration) 

-(void)setBorderUIColor:(UIColor*)color 
{ 
    self.borderColor = color.CGColor; 
} 

-(UIColor*)borderUIColor 
{ 
    return [UIColor colorWithCGColor:self.borderColor]; 
} 

@end 
+3

あなたは何か新しいことを毎日学びます。これは何ヶ月も前に知っていたのは役に立ちました。 – RyanG

+2

うわー、これはとても涼しいです!私はこの隠された宝石について知りませんでした! Upvoted。 – Macondo2Seattle

+3

ところで、ボーダーが表示されるように 'layer.borderWidth'を設定しなければなりませんでした。 – Macondo2Seattle

-3

次のようなコードの一部を使用することができます。

self.addButton.layer.borderColor = [[UIColor greenColor] CGColor];

ますのでご注意ください:addButtonはIBOutletです。

+0

質問者はプログラミング以外の方法が必要です。 –

7

スウィフト3 あなたがIBInspectableを使用するときにIBで結果を見たい場合は、あなたがUIViewのを拡張し、そのクラスにプロパティを追加する必要があり、すなわち

@IBDesignable class MyView: UIView {} 

extension MyView { 
    @IBInspectable var cornerRadius: CGFloat { 
     get { 
      return layer.cornerRadius 
     } 
     set { 
      layer.cornerRadius = newValue 
      layer.masksToBounds = newValue > 0 
     } 
    } 

    @IBInspectable var borderWidth: CGFloat { 
     get { 
      return layer.borderWidth 
     } 
     set { 
      layer.borderWidth = newValue 
      layer.masksToBounds = newValue > 0 
     } 
    } 

    @IBInspectable var borderColor: UIColor { 
     get { 
      return UIColor.init(cgColor: layer.borderColor!) 
     } 
     set { 
      layer.borderColor = newValue.cgColor 
     } 
    } 
} 

参照:http://nshipster.com/ibinspectable-ibdesignable/

+0

これは素晴らしいです! – ilovebigmacs

関連する問題