日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

xib 设置阴影_使用“IBInspectable”XIB设置圆角、边框、阴影

發布時間:2025/3/12 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xib 设置阴影_使用“IBInspectable”XIB设置圆角、边框、阴影 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

iOS開發中使用xib和storyboard可以節約大量的寫UI代碼的時間。這也是蘋果官方比較推薦的方式。不過使用IB的方式來布局頁面難免遇到一些需要設置圓角(cornerRadius)、陰影(shadowRadius)、邊框(borderColor、borderWidth)這些不能直接在xib中設置的參數。還有一些自定義的view的一些參數。

原來呢,我是把這些控件拖到代碼里面,在合適的時機用代碼來設置這些參數,這樣的話既要IB又要代碼,感覺不舒服。或者是在identity inspector中設置user defined runtime attributes 。如下圖:

EFDBF843-245C-49A1-B976-A6F98A16BD93.png

感覺還是很不方便,每個控件都要單獨設置一次,麻煩!!!

接下來說重點 IBInspectable

舉個例子,好多控件都可能會設置圓角,UIView、UIButton、UILable、UIImageView等等。

我們可以寫一個這樣的分類

//

// UIView+ForXIB.h

// OTTPos

//

// Created by Lipengxuan on 3/12Tuesday.

// Copyright ? 2019 OTTPay. All rights reserved.

//

#import

NS_ASSUME_NONNULL_BEGIN

@interface UIView (ForXIB)

@property (nonatomic, assign) IBInspectable CGFloat fx_radius;

@property (nonatomic, assign) IBInspectable CGFloat fx_borderWidth;

@property (nonatomic, assign) IBInspectable BOOL fx_masksToBounds;

@property (nonatomic, assign) IBInspectable UIColor *fx_borderColor;

@end

NS_ASSUME_NONNULL_END

//

// UIView+ForXIB.m

// OTTPos

//

// Created by Lipengxuan on 3/12Tuesday.

// Copyright ? 2019 OTTPay. All rights reserved.

//

#import "UIView+ForXIB.h"

#import

@implementation UIView (ForXIB)

-(void)awakeFromNib{

[super awakeFromNib];

self.layer.cornerRadius = self.fx_radius;

self.layer.masksToBounds = self.fx_masksToBounds;

self.layer.borderColor = self.fx_borderColor.CGColor;

self.layer.borderWidth = self.fx_borderWidth;

}

// MARK: - ================ Setters ===========================

static NSString *fx_radiusKey = @"fx_radius";

-(void)setFx_radius:(CGFloat)fx_radius{

objc_setAssociatedObject(self, &fx_radiusKey, @(fx_radius), OBJC_ASSOCIATION_COPY);

}

static NSString *fx_borderColorKey = @"fx_borderColor";

-(void)setFx_borderColor:(UIColor *)fx_borderColor{

objc_setAssociatedObject(self, &fx_borderColorKey, fx_borderColor, OBJC_ASSOCIATION_COPY);

}

static NSString *fx_borderWidthKey = @"fx_borderWidth";

-(void)setFx_borderWidth:(CGFloat)fx_borderWidth{

objc_setAssociatedObject(self, &fx_borderWidthKey, @(fx_borderWidth), OBJC_ASSOCIATION_COPY);

}

static NSString *fx_masksToBoundsKey = @"fx_masksToBounds";

-(void)setFx_masksToBounds:(BOOL)fx_masksToBounds{

objc_setAssociatedObject(self, &fx_masksToBoundsKey, @(fx_masksToBounds), OBJC_ASSOCIATION_COPY);

}

// MARK: - ================ Getters ===========================

-(CGFloat)fx_radius{

return [objc_getAssociatedObject(self, &fx_radiusKey) floatValue];

}

-(UIColor *)fx_borderColor{

UIColor *c = objc_getAssociatedObject(self, &fx_borderColorKey);

return c ;

}

-(CGFloat)fx_borderWidth{

return [objc_getAssociatedObject(self, &fx_borderWidthKey) floatValue];

}

-(BOOL)fx_masksToBounds{

return [objc_getAssociatedObject(self, &fx_masksToBoundsKey) boolValue];

}

@end

來看看storyboard中的效果:

40DA9592-0C05-45CD-A5B0-2986CB6529A8.png

再來看看運行效果:

0EA0922C-C34C-43EB-B1C6-8AD562F81306.png

OK,大功告成。

當然不寫分類,uiview、uitextfield、uibutton等等的子類也可以用同樣方法處理。

總結

以上是生活随笔為你收集整理的xib 设置阴影_使用“IBInspectable”XIB设置圆角、边框、阴影的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。