美文网首页
iOS中实现上下左右边框的自定义显示

iOS中实现上下左右边框的自定义显示

作者: 841883f31e69 | 来源:发表于2016-09-05 15:12 被阅读442次

有时候我们需要自定义上下左右边框哪一边或几边显示,现在介绍下我的方法,希望可以为大家提供一种思路。

项目中调用类似:

self.view.borderWhich = ZJViewBorderBottom;

不说那么多,直接上代码。

UIView+additional.h

#import

typedef NS_ENUM(NSInteger, ZJViewBorder) {

ZJViewBorderTop = 1<<1,

ZJViewBorderLeft = 1<<2,

ZJViewBorderBottom = 1<<3,

ZJViewBorderRight = 1<<4,

};

@interface UIView (additional)

@property (nonatomic, assign) ZJViewBorder borderWhich;

@end

UIView+additional.m

#import "UIView+additional.h"

@implementation UIView (additional)

@dynamic borderWhich;

- (void)setBorderWhich:(ZJViewBorder)borderWhich {

CGFloat bh = self.layer.borderWidth;

if (borderWhich & ZJViewBorderBottom) {

[self addBottomBorder:self borderHeight:bh];

}

if (borderWhich & ZJViewBorderLeft) {

[self addLeftBorder:self borderHeight:bh];

}

if (borderWhich & ZJViewBorderRight) {

[self addRightBorder:self borderHeight:bh];

}

if (borderWhich & ZJViewBorderTop) {

[self addTopBorder:self borderHeight:bh];

}

self.layer.borderWidth = 0;

}

- (void)addTopBorder:(UIView *)vi borderHeight:(CGFloat)bh {

CGColorRef col = vi.layer.borderColor;

if (vi.layer.borderWidth > 1000 || vi.layer.borderWidth == 0) {

bh = 1;

}

else

bh = vi.layer.borderWidth;

CALayer *border = [CALayer layer];

border.frame = CGRectMake(0, 0, vi.frame.size.width, bh);

border.backgroundColor = col;

[vi.layer addSublayer:border];

}

- (void)addLeftBorder:(UIView *)vi borderHeight:(CGFloat)bh{

CGColorRef col = vi.layer.borderColor;

if (vi.layer.borderWidth > 1000 || vi.layer.borderWidth == 0) {

bh = 1;

}

else

bh = vi.layer.borderWidth;

CALayer *border = [CALayer layer];

border.frame = CGRectMake(0, 0, bh, vi.frame.size.height);

border.backgroundColor = col;

[vi.layer addSublayer:border];

}

- (void)addBottomBorder:(UIView *)vi borderHeight:(CGFloat)bh{

CGColorRef col = vi.layer.borderColor;

if (vi.layer.borderWidth > 1000 || vi.layer.borderWidth == 0) {

bh = 1;

}

else

bh = vi.layer.borderWidth;

CALayer *border = [CALayer layer];

border.frame = CGRectMake(0, vi.frame.size.height-bh, vi.frame.size.width, bh);

border.backgroundColor = col;

[vi.layer addSublayer:border];

}

- (void)addRightBorder:(UIView *)vi borderHeight:(CGFloat)bh{

CGColorRef col = vi.layer.borderColor;

if (vi.layer.borderWidth > 1000 || vi.layer.borderWidth == 0) {

bh = 1;

}

else

bh = vi.layer.borderWidth;

CALayer *border = [CALayer layer];

border.frame = CGRectMake(vi.frame.size.width-bh, 0, bh, vi.frame.size.height);

border.backgroundColor = col;

[vi.layer addSublayer:border];

}

@end

相关文章

  • iOS中实现上下左右边框的自定义显示

    有时候我们需要自定义上下左右边框哪一边或几边显示,现在介绍下我的方法,希望可以为大家提供一种思路。 项目中调用类似...

  • 用 CSS 创建纯三角形

    实现三角形,原理:块级元素,边框被分成了上下左右四分,需要显示的地方加上颜色,不需要显示的设置为透明色。 截图: ...

  • 移动端一像素边框

    如何实现在移动端中显示一像素的边框 实现方案一:0.5像素 标准边框语法div{ border: 1px sol...

  • 添加 虚线边框|单边框

    在iOS中某些控件是具备直接使用 layer.boder 属性设置边框的宽度和颜色即可添加实现边框;并且可以实现圆...

  • 使用Picasso加载带饼状进度条的图片

    本文介绍了如何在Picasso中显示图片下载的进度,并实现了一种类似于iOS中ProgressHUD的自定义进度条...

  • UITextField相关属性设置和代理方法

    设置边框样式,只有设置了才会显示边框样式 //设置输入框的背景颜色,此时设置为白色 如果使用了自定义的背景图片边框...

  • ios关于UI

    1.ios在控件上添加虚线边框 内容很详细,涉及到虚线边框圆角问题及解决过程。 2.ios截图 ①截某个显示图片的...

  • iOS xib中控件显示蓝牙边框

    当我们是用xib进行的布局的时候 ,只有点击控件的时候才能看见大小和位置,不够便捷, Xcode菜单-->Canv...

  • ios11中导航栏titleView问题

    在ios11中自定义导航栏的titleView,自定义的空间是用约束或者masonry的话 显示的自定义的这个控件...

  • iOS App导入自定义字体

    原文iOS App导入自定义字体 需求 iOS项目中需要导入第三方字体,来进行显示字体样式。 实现方法 1 先找到...

网友评论

      本文标题:iOS中实现上下左右边框的自定义显示

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