iOS之用xib給控件設置圓角、邊框效果


xib中為各種控件設置圓角

  • 通過代碼的方式設置
@interface ViewController () @property (weak, nonatomic) IBOutlet UIView *myView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.myView.layer.masksToBounds = YES; self.myView.layer.cornerRadius = 10; }
  • 通過xib快速設置圓角
    • 利用User Defined Runtime Attributes 進行設置

身份檢查器
  • 詳細步驟介紹
    • 點擊UI控件
    • 點擊 Xcode 右側上方身份檢查器(左起第三個按鈕)
    • 找到 Runtime Attributes 屬性,通過Key Path 和 Value 進行設置
  • 設置圓角需要到的Key Path:
    • layer.cornerRadius ,注意該 key 對應 Value 的 type 應該設置為 String
    • layer.masksToBounds ,注意該 key 對應 Value 的 type 應該設置為 Boolean , 當右側出現對號時為YES
    • 注意:經過測試,UILabel 必須設置設置 masksToBounds 這一鍵值對,才會出現圓角效果;UIButton、UIView、UIImageView 只需設置 layer.cornerRadius 這一鍵值對就可實現圓角效果

Xib 為控件設置邊框效果

  • 通過代碼方式進行設置
- (void)viewDidLoad { [super viewDidLoad]; self.myView.layer.borderColor = [UIColor redColor].CGColor; self.myView.layer.borderWidth = 2; }
  • 通過xib快速設置邊框
    • 所用方法和上面所講Xib設置圓角基本相同,唯一不同的就是設置 key Path 鍵值對
  • 設置邊框需要到的Key Path:
    • layer.borderWidth ,注意該 key 對應 Value 的 type 應該設置為 String
    • layer.borderColor , 注意該 key 對應 Value 的 type 應該設置為 Color

      當我們滿懷欣喜的運行程序的時候,你會發現結果並不會如你所想,邊框效果並沒有出現,那么難道是我們的方法不對么?

  • 不知道你有沒有注意到 layer.borderColor 對應值得類型:Color;經常用代碼進行邊框設置的你,一定記得我們設置的顏色類型為CGColor,不錯問題就出在了這上面
    • 按照上述方法我們設置的邊框顏色為 UIColor 類型,當然不會起作用了啊。
  • 下面就給出一種簡便的解決方法,我們只需要為 CALayer 創建一個分類就可以了,具體代碼如下:
CALayer+ZZYXibBorderColor.h #import <QuartzCore/QuartzCore.h> @interface CALayer (ZZYXibBorderColor) @end CALayer+ZZYXibBorderColor.m #import "CALayer+ZZYXibBorderColor.h" #import <UIKit/UIKit.h> @implementation CALayer (ZZYXibBorderColor) - (void)setBorderColorWithUIColor:(UIColor *)color { self.borderColor = color.CGColor; } @end

注意此時,設置邊框顏色就需要用 layer.borderColorWithUIColor來代替 layer.borderColor
注意:當我們使用Xib設置控件圓角、邊框的時候,如果將key Path寫錯,系統不會報錯,但是運行不會實現理想的效果



文/念男(簡書作者)
原文鏈接:http://www.jianshu.com/p/3f6a4343139e
著作權歸作者所有,轉載請聯系作者獲得授權,並標注“簡書作者”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM