在 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.5height(或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 &lt;QuartzCore/QuartzCore.h&gt; 添加到您的视图中。

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 上画一条很细的线的主要内容,如果未能解决你的问题,请参考以下文章

如何在打印机上画一条看起来比像素还细的线?

在 UIViewController 上画一条线

网页中有些边框是一条很细的黑线,是怎么弄的?我看里面明明写的border="0"嘛!怎么会有边框?

在 JPEG 图像上画一条简单的线

画一条可以像 Swift 中的 Xcode 助手编辑器一样伸展的线

在uiview中缓存绘图