xib可視化類別擴(kuò)展

不需要一句代碼抚岗,給UI控件設(shè)置圓角和陰影及1px的兼容
  • 在看這篇文章之前 請先參看IBInspectable 和 IB_DESIGNABLE
  • 在Xib中 系統(tǒng)自帶的UI控件中 添加一些 額外的屬性
  • eg:


  • 效果


示例代碼:

特別注意:
如果想實(shí)時(shí)監(jiān)聽MBIBnspectable的改變的話,需要繼承一個(gè)空的基類,或者自定義的類。
如果需要的話請繼承于PXBaseView.h

  • UIView的xib擴(kuò)展
  • .h文件
#import <UIKit/UIKit.h>
IB_DESIGNABLE
/** View的XIB可視化擴(kuò)展類> */
@interface UIView (IBnspectable)
/*!
 * 給UIView 設(shè)置圓角
 */
@property (assign,nonatomic) IBInspectable NSInteger cornerRadius;
@property (assign,nonatomic) IBInspectable BOOL  masksToBounds;

/*!
 * 設(shè)置 view的 邊框顏色(選擇器和Hex顏色) 
 * 以及 邊框的寬度
 */
@property (assign,nonatomic) IBInspectable NSInteger borderWidth;
@property (strong,nonatomic) IBInspectable NSString  *borderHexRgb;
@property (strong,nonatomic) IBInspectable UIColor   *borderColor;
/*!
 * 設(shè)置view的背景Hex顏色 (選擇器顏色 是系統(tǒng)自帶的不需要寫)
 */
@property (assign,nonatomic) IBInspectable NSString  *hexRgbColor;
//TODO: 特別注意
/*!
 * 這個(gè)屬性可以開啟 Retina屏對 1px的支持
 * Retain屏的分辨率 [UIScreen mainScreen].scale分辨率是 >=2
 * 
 */
@property (assign,nonatomic) IBInspectable BOOL      onePx;
@end
  • .m文件的實(shí)現(xiàn)
@implementation UIView (IBnspectable)
- (void)setCornerRadius:(NSInteger)cornerRadius{
    self.layer.cornerRadius = cornerRadius;
    self.layer.masksToBounds = cornerRadius > 0;
}

- (NSInteger)cornerRadius{
    return self.layer.cornerRadius;
}

- (void)setBorderWidth:(NSInteger)borderWidth{
    self.layer.borderWidth = borderWidth;
}

- (NSInteger)borderWidth{
    return self.layer.borderWidth;
}

- (void)setBorderColor:(UIColor *)borderColor{
    self.layer.borderColor = borderColor.CGColor;
}

- (UIColor *)borderColor{
    return [UIColor colorWithCGColor:self.layer.borderColor];
}

- (void)setBorderHexRgb:(NSString *)borderHexRgb{
    NSScanner *scanner = [NSScanner scannerWithString:borderHexRgb];
    unsigned hexNum;
    //這里是將16進(jìn)制轉(zhuǎn)化為10進(jìn)制
    if (![scanner scanHexInt:&hexNum])
        return;
    self.layer.borderColor = [self colorWithRGBHex:hexNum].CGColor;
}

-(NSString *)borderHexRgb{
    return @"0xffffff";
}

- (void)setMasksToBounds:(BOOL)bounds{
    self.layer.masksToBounds = bounds;
}

- (BOOL)masksToBounds{
    return self.layer.masksToBounds;
}

#pragma mark - hexRgbColor
- (void)setHexRgbColor:(NSString *)hexRgbColor{
    NSScanner *scanner = [NSScanner scannerWithString:hexRgbColor];
    unsigned hexNum;
    if (![scanner scanHexInt:&hexNum]) return;
    self.backgroundColor = [self colorWithRGBHex:hexNum];
}

- (UIColor *)colorWithRGBHex:(UInt32)hex {
    int r = (hex >> 16) & 0xFF;
    int g = (hex >> 8) & 0xFF;
    int b = (hex) & 0xFF;
    
    return [UIColor colorWithRed:r / 255.0f
                           green:g / 255.0f
                            blue:b / 255.0f
                           alpha:1.0f];
}


- (NSString *)hexRgbColor{
    return @"0xffffff";
}

#pragma mark - setOnePx
- (void)setOnePx:(BOOL)onePx{
    if (onePx) {
        CGRect rect = self.frame;
        rect.size.height = 5/ [UIScreen mainScreen].scale;
        self.frame = rect;
    }
}

- (BOOL)onePx{
    return self.onePx;
}
@end

GitHub地址:https://github.com/421696067/Category-Xib.git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市具钥,隨后出現(xiàn)的幾起案子芙盘,更是在濱河造成了極大的恐慌驯用,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儒老,死亡現(xiàn)場離奇詭異蝴乔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)驮樊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門薇正,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人囚衔,你說我怎么就攤上這事挖腰。” “怎么了练湿?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵猴仑,是天一觀的道長。 經(jīng)常有香客問我肥哎,道長辽俗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任篡诽,我火速辦了婚禮崖飘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杈女。我一直安慰自己朱浴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布碧信。 她就那樣靜靜地躺著赊琳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪砰碴。 梳的紋絲不亂的頭發(fā)上躏筏,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機(jī)與錄音呈枉,去河邊找鬼趁尼。 笑死埃碱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的酥泞。 我是一名探鬼主播砚殿,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼芝囤!你這毒婦竟也來了似炎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤悯姊,失蹤者是張志新(化名)和其女友劉穎羡藐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悯许,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仆嗦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了先壕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘩扼。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖垃僚,靈堂內(nèi)的尸體忽然破棺而出集绰,到底是詐尸還是另有隱情,我是刑警寧澤冈在,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布倒慧,位于F島的核電站按摘,受9級特大地震影響包券,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜炫贤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一溅固、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兰珍,春花似錦侍郭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唠摹,卻和暖如春爆捞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勾拉。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工煮甥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盗温,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓成肘,卻偏偏與公主長得像卖局,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子双霍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,110評論 25 707
  • 引言 學(xué)到這里砚偶,xib給我?guī)淼膸椭呀?jīng)很大了,最大的莫過于UI控件的創(chuàng)建洒闸、屬性的賦值再也不用寫代碼蟹演,就UI開發(fā)來...
    二亮子閱讀 7,237評論 41 82
  • 2016年的考研大幕已經(jīng)拉下,2017年的考研大軍已經(jīng)滾滾而來顷蟀。在網(wǎng)上充斥著各種考研成功的經(jīng)驗(yàn)貼酒请,但是我很少看見考...
    姚小幺閱讀 1,179評論 5 3
  • 20170406學(xué)習(xí)筆記 (1)Chinese sci-fic writer nominated for seco...
    Joan一憶稀薄涼閱讀 126評論 0 0
  • 1/ 公交車上 L君戴著一只黑色的口罩,雙手插進(jìn)大衣的口袋里鸣个,將自己包裹得像粽子一樣嚴(yán)實(shí)——活生生一個(gè)重度感冒患者...
    上好的雞湯閱讀 311評論 0 0