在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 <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?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容