日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/3/12 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xib 设置阴影_使用“IBInspectable”XIB设置圆角、边框、阴影 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

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

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

感覺還是很不方便,每個(gè)控件都要單獨(dú)設(shè)置一次,麻煩!!!

接下來說重點(diǎn) IBInspectable

舉個(gè)例子,好多控件都可能會(huì)設(shè)置圓角,UIView、UIButton、UILable、UIImageView等等。

我們可以寫一個(gè)這樣的分類

//

// 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

再來看看運(yùn)行效果:

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

OK,大功告成。

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。