xib可视化类别扩展

作者: 随梦而飞飞 | 来源:发表于2016-02-18 19:59 被阅读590次
不需要一句代码,给UI控件设置圆角和阴影及1px的兼容

示例代码:

特别注意:
如果想实时监听MBIBnspectable的改变的话,需要继承一个空的基类,或者自定义的类。
如果需要的话请继承于PXBaseView.h

  • UIView的xib扩展
  • .h文件
#import <UIKit/UIKit.h>
IB_DESIGNABLE
/** View的XIB可视化扩展类> */
@interface UIView (IBnspectable)
/*!
 * 给UIView 设置圆角
 */
@property (assign,nonatomic) IBInspectable NSInteger cornerRadius;
@property (assign,nonatomic) IBInspectable BOOL  masksToBounds;

/*!
 * 设置 view的 边框颜色(选择器和Hex颜色) 
 * 以及 边框的宽度
 */
@property (assign,nonatomic) IBInspectable NSInteger borderWidth;
@property (strong,nonatomic) IBInspectable NSString  *borderHexRgb;
@property (strong,nonatomic) IBInspectable UIColor   *borderColor;
/*!
 * 设置view的背景Hex颜色 (选择器颜色 是系统自带的不需要写)
 */
@property (assign,nonatomic) IBInspectable NSString  *hexRgbColor;
//TODO: 特别注意
/*!
 * 这个属性可以开启 Retina屏对 1px的支持
 * Retain屏的分辨率 [UIScreen mainScreen].scale分辨率是 >=2
 * 
 */
@property (assign,nonatomic) IBInspectable BOOL      onePx;
@end
  • .m文件的实现
@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进制转化为10进制
    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

相关文章

  • xib可视化类别扩展

    不需要一句代码,给UI控件设置圆角和阴影及1px的兼容 在看这篇文章之前 请先参看IBInspectable 和 ...

  • Seaborn简介

    Seaborn 数据集分布可视化 类别数据可视化 类别散布图 类别内数据分布 类别内统计图

  • iOS-个人整理21 - 可视化编辑-XIB

    一、可视化编辑-XIB 做UI的自然要有可视化编程,有拖拽控件的便利方法,现在开始学习xib的可视化编辑基础概念 ...

  • iOS_UI_13_可视化xib

    第十三章 可视化xib 一、Interface Builder 可视化编程

  • 类别(Category)与类扩展 (Extension)的区别

    类别(Category)与类扩展 (Extension)的区别 iOS 类别和扩展(Categories和Exte...

  • iOS - XIB

    -- xib 可视化布局。先冻结xib布局的部分. -- 默认通过initWithCoder: (正在进行初始化)...

  • 类别和扩展

    类别 不需要通过增加子类而增加现有类的方法通过类别可以将一个类的方法进行划分,便于维护不能向类别添加实例变量,只能...

  • 类别和扩展

    类别(Category) 类别的作用 拓展当前类,为类添加方法拓展。 类别的局限性 无法向现有的类中添加新的实例变...

  • 类别和扩展

    类别和扩展 类别可以让你的方法添加到现有的类甚至是一个你没有来源。类别是一个强大的功能,允许您在不进行子类化的情况...

  • 关于创建XIB无法改变size的设置

    其它可视化视图编程链接:关于UITableView的自定义cell加载XIB关于UIView的XIB加载 一. 对...

网友评论

本文标题:xib可视化类别扩展

本文链接:https://www.haomeiwen.com/subject/ziwmkttx.html