1. 程式人生 > >iOS之用xib給控制元件設定圓角、邊框效果

iOS之用xib給控制元件設定圓角、邊框效果

轉自: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寫錯,系統不會報錯,但是執行不會實現理想的效果