如何使用 BezierPath 绘制 1px 线
Posted
技术标签:
【中文标题】如何使用 BezierPath 绘制 1px 线【英文标题】:How to draw 1px line using BezierPath 【发布时间】:2014-09-04 15:49:18 【问题描述】:我有以下代码来绘制水平线:
UIBezierPath *topLine = [UIBezierPath bezierPath];
[topLine moveToPoint:CGPointMake(0, topMargin + lineHeight * 2.0f)];
[[self getTopSeparatorLineColor] setStroke];
topLine.lineWidth = 1.0f;
[topLine addLineToPoint:CGPointMake(rect.size.width, topMargin + lineHeight * 2.0f)];
[topLine stroke];
它可以工作,但线路是“胖”的。我想像 UITableView 分隔符一样画线..
UIBezierPath 可以吗?
【问题讨论】:
也许是0.5
? lineWidth
的 1.0f
是(在视网膜设备上)两个像素宽。
没什么区别
应该有一些的不同。哈哈。 0.25f?
0.25f 看起来更好,但我想知道如何在不猜测数字的情况下正确地做到这一点..
我想如果我必须使用“魔术”数字 - 我需要知道如何确定这个数字是什么。也许使用某种 API 来获得转化?
【参考方案1】:
正如 Apple UIBezierPath 类参考所说:
@property(nonatomic) CGFloat lineWidth
线宽定义了接收器的描边路径的粗细。一种 width of 0 被解释为可以在上面渲染的最细的线 特定的设备。
所以简单地做,你总是会得到 1px 的宽度:
topLine.lineWidth = 0.0f;
【讨论】:
不得不把答案拿走。刚试过这个 - 根本没有画线。不在模拟器中,不在真实设备上 当然。我昨天没有机会自己尝试,但我记得它在过去有效......Apple官方参考现在是? 好像是这样。或者我的眼睛在说谎,他们看不到线:)以上是关于如何使用 BezierPath 绘制 1px 线的主要内容,如果未能解决你的问题,请参考以下文章
为啥`[bezierPath closePath]`方法没有关闭我的路径?
如何在Swift中的BezierPath之后为imageView的点1到2和点2到3设置不同的animation.duration时间?