在 UIView 上画一条很细的线
Posted
技术标签:
【中文标题】在 UIView 上画一条很细的线【英文标题】:Drawing a very thin line on UIView 【发布时间】:2014-03-19 07:42:46 【问题描述】:所以我在我的应用程序顶部得到了UIView
,我想在它的底部画一条细线,一条非常相似的线在UITableView
中充当分隔符。我目前有一个UIView
,在 IB 中设置了 1px 的高度,但是当我将该行与UITableView
中的分隔符进行比较时,它的高度更高。有什么好的方法可以在UIView
内画一条细线吗?
【问题讨论】:
将它的 alpha 设置为 0.5 或更小,它会看起来更薄 我认为你应该去寻找标签并改变它的背景颜色。不要在标签上写任何东西。 【参考方案1】:将0.5
的height
(或width
)赋予线视图的框架,并将backgroundColor
设置为[UIColor lightGrayColor]
。
编辑:对于非视网膜,您可以将高度/宽度更改为(1.0 / [UIScreen mainScreen].scale)
这将导致视网膜显示器为 0.5,非视网膜显示器为 1.0。
【讨论】:
这在非视网膜设备上看起来很糟糕,但如果你只在 ios7 上支持 iPhone,那不是问题。 @Marc,是否可以在非视网膜显示中设置 0.5? 有可能,但我不知道它会是什么样子。这就是为什么我发布了一个替代公式。不要硬编码0.5
,而是使用公式。
@jrturton 第一款 iPad mini 支持 iOS 7,而且是非视网膜的。
@thisiscrazy4 是的,但我们说的是 iPhone【参考方案2】:
只需插入你的UIView
#import <QuartzCore/QuartzCore.h>
在drawRect:
里面添加这个并指定行高
- (void)drawRect:(CGRect)rect
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0f);
//start at this point
CGContextMoveToPoint(context, 0, self.frame.size.height);
//draw to this point
CGContextAddLineToPoint(context,
self.frame.size.width,
self.frame.size.height);
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
// and now draw the Path!
CGContextStrokePath(context);
你会在这里得到一条像红色的线
【讨论】:
【参考方案3】:试试看这个。此代码将为您的视图绘制一个 2px 的红色边框。
将#import <QuartzCore/QuartzCore.h>
添加到您的视图中。
CALayer *bottomBorder = [CALayer layer];
bottomBorder.frame = CGRectMake(0.0f, myview.frame.size.height - 2, myview.frame.size.width, 2.0f);
bottomBorder.backgroundColor = [UIColor redColor].CGColor;
[myview.layer addSublayer:bottomBorder];
【讨论】:
以上是关于在 UIView 上画一条很细的线的主要内容,如果未能解决你的问题,请参考以下文章
网页中有些边框是一条很细的黑线,是怎么弄的?我看里面明明写的border="0"嘛!怎么会有边框?