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

有时候我们需要自己创建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 

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就会多出一个配置选项 。

在storyboard中创建1像素的分割线_第1张图片
Attribute Inspector

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

在storyboard中创建1像素的分割线_第2张图片
Identity Inspector

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

参考

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

你可能感兴趣的:(在storyboard中创建1像素的分割线)