【发布时间】:2012-08-18 23:39:39
【问题描述】:
我有什么:
要创建这一行,我基本上有一个UIView,我执行以下操作:
void setLayerToLineFromAToB(CALayer *layer, CGPoint a, CGPoint b, CGFloat lineWidth)
{
CGPoint center = { 0.5 * (a.x + b.x), 0.5 * (a.y + b.y) };
CGFloat length = sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
CGFloat angle = atan2(a.y - b.y, a.x - b.x);
layer.position = center;
layer.bounds = (CGRect) { {0, 0}, { length + lineWidth, lineWidth } };
layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1);
}
注意:此代码是在 stackoverflow 上找到的,因此如果有人能给我提供参考,我将不胜感激。
我想要什么:
好的,所以我需要的“唯一”事情是在UIView 上创建此模式。我知道我可以使用 Quartz2D 来做到这一点(可以找到一个简单的方法来做到这一点here)。但我想通过操纵CALayer 而不是使用draw 方法来做到这一点。为什么?由于我在 UIView 上进行的转换,我无法使用 draw 方法正确绘制。
编辑 1:
只是为了说明我的问题:
通常你拥有的是UIView,然后你基本上只是在其中画一些东西(在这种情况下是一条简单的线)。我发现摆脱“灰色”区域的解决方案是,而不是绘制一些东西,只是改变UIView 本身。它工作得很好,如果你想要一条完全填充的线,当你想要一条虚线时问题就来了。
【问题讨论】:
-
为什么不用 Quartz2D 在图层上绘制这个然后变换图层?!
-
你在说什么,基本上是在
draw方法上画出来然后应用变换? -
是的,这就是我的意思......所以这就像你画一个“图像”然后只是转换这个“图像”
-
@lukaswelte 检查我的编辑,看看你说的是否有道理。
-
摆脱灰色背景?为什么不只是在 drawRect 中画线,然后转换你的 uiview 将完全符合你想要的技巧......而这对于你之前在视图上绘制的任何形状
标签: iphone ios uiview calayer quartz-2d