storyboard或者Xib給View設置邊框屬性(顏色,寬度,圓角)

純代碼設置Button或者其餘View的邊框屬性佈局

例: UIView* view = [[UIView alloc]init];ui

     view.layer.borderWidth = 2.0;this

    view.layer.masksToBounds = YES;spa

     view.layer.cornerRadius = 5.0;3d

     view.layer.borderColor = [UIColorredColor].CGColor;blog

 

如下提供自定義控件的時候,使用Xib,或者用sb來進行佈局,那麼這時候怎麼來使用storyboard或者Xib給View設置邊框屬性的方法

其主要設置的方式是經過在 XIB操做欄的User Defined Runtime Attributes中經過 KEY PATH去設置當前控件的屬性,具體步驟以下圖所示:
 
這裏寫圖片描述
 
 

設置圓角最經常使用的是設置圓角,邊框顏色,所以須要用到的 key Path有一下幾個:圖片

  1. layer.cornerRadius ,注意該 key 對應 Value 的 type 應該設置爲 String/Number 
    兩種類型都可(代碼設置弧度爲:thisViewlayer.masksToBounds = YES)
  2. layer.masksToBounds ,注意該 key 對應 Value 的 type 應該設置爲 Boolean , 
    當右側出現對號時爲YES(代碼圓角爲:thisView.layer.masksToBounds = YES)
  3. layer.borderWidth ,注意該 key 對應 Value 的 type 應該設置爲 String/Number 
    兩種類型都可(代碼設置邊框寬度爲:thisViewlayer.borderWidth = 2)
  4. layer.borderColor , 注意該 key 對應 Value 的 type 應該設置爲 
    Color(代碼設置邊框顏色:thisView.layer.borderColor = [UIColor 
    redColor].CGColor)

其實若是你從上面一直敲下來的話: 
你會發現只有1和2的兩句代碼是有效的; 
3,4兩句代碼看起來並無效果ip

緣由:實際上是由於在設置borderColor的時候,須要接受的是一個CGColor,而在 key Path中只有Color,其實就是 UIColor,類型是不對的,所以並無正確顯示想要展示的顏色.it

所以這樣的寫法是有問題的. 
因此要經過添加一個CALayer的類擴展來實現,將key Path中設置的UIColor轉換成爲CGColor,爲邊框設置顏色,實現以下:io

 

 

而後在你的分類.m文件中添加一個屬性

#import "CALayer+XibBorderColor.h"

#import <UIKit/UIKit.h>

@implementation CALayer (XibBorderColor)

 

- (void)setBorderColorWithUIColor:(UIColor *)color

{

    

    self.borderColor = color.CGColor;

}

 

@end

這樣之後,只須要將key Path中的layer.borderColor修改爲爲layer.setBorderColorWithUIColor 就能夠了
 
 
 
添加陰影同理:
 

-(void)setShadowColorWithUIColor:(UIColor *)color

{

    self.shadowColor = color.CGColor;

}

 

@end

相關文章
相關標籤/搜索