美文网首页iOS SBiOS开发
在storyboard中创建1像素的分割线

在storyboard中创建1像素的分割线

作者: 李俊峰 | 来源:发表于2015-07-04 12:09 被阅读2426次

    有时候我们需要自己创建1像素的分割线。那么我们需要的point为:
    1.0f / [UIScreen mainScreen].scale
    但是在storyboard中,视图的高度只能填写整数,更何况这里还需要动态变化。我们可以在代码里直接设置,但我还是想如果使用storyboard就尽量保持一致都用storyboard。在网上找到一个方法。就是使用IB_DESIGNABLEIBInspectable

    IB_DESIGNABLE
    IB_DESIGNABLE的宏的功能就是让XCode动态渲染出该类图形化界面。

    IBInspectable
    让支持KVC的属性能够在Attribute Inspector中配置。

    我们对分割线的布局采用自动布局来做,把分割线的高度约束为1 point
    然后新建一个继承自NSLayoutConstraint的子类IBDesignableOnePixelConstant,把分割线高度约束的类改为IBDesignableOnePixelConstant
    源码为:

    #import <UIKit/UIKit.h>
    
    IB_DESIGNABLE
    
    @interface IBDesignableOnePixelConstant : NSLayoutConstraint
    
    @property (nonatomic) IBInspectable NSInteger onePixelConstant;
    
    @end
    
    #import "IBDesignableOnePixelConstant.h"
    
    @implementation IBDesignableOnePixelConstant
    
    - (void)setOnePixelConstant:(NSInteger)onePixelConstant
    {
        _onePixelConstant = onePixelConstant;
        self.constant = onePixelConstant * 1.0 / [UIScreen mainScreen].scale;
    }
    
    @end
    
    

    这样,在Attribute Inspector就会多出一个配置选项 。

    Attribute Inspector

    我们在One Pixel Constant里面填写1。每次我们设置这个值都会在Identity Inspector中改变一个User Defined Runtime AttributesKVC变量。

    Identity Inspector

    通过这几个简单的步骤,我们就在storyboard中创建了1像素的分割线。

    参考

    iOS SDK详解之IBInspectable和IB_DESIGNABLE-Storyboad动态刷新
    How do I create a 1px line in Interface Builder?

    相关文章

      网友评论

      • 冰三尺:如何设置高度为0.5呢?
      • 超_iOS:为什么不建一个view高是1?求解答

      本文标题:在storyboard中创建1像素的分割线

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