iOS之用xib給控制元件設定圓角、邊框效果
阿新 • • 發佈:2018-11-14
轉自:https://www.cnblogs.com/zhun/p/5616540.html
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寫錯
,系統不會報錯
,但是執行不會實現理想的效果