gpt4 book ai didi

iphone - 带虚线的 UIView

转载 作者:IT王子 更新时间:2023-10-29 07:53:14 25 4
gpt4 key购买 nike

我有什么:

enter image description here

要创建这一行,我基本上有一个 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 上找到的,所以如果有人能给我引用,我将不胜感激。

我想要的:

enter image description here

好的,所以我“唯一”需要的是在 UIView 上创建这个模式。我知道我可以使用 Quartz2D 来做到这一点(一种简单的方法可以找到 here )。但我想通过操纵 CALayer 而不是去 draw 方法来做到这一点。为什么?由于我在 UIView 上进行的转换,我无法使用 draw 方法正确绘制。

编辑 1:

只是为了说明我的问题:

enter image description here

通常你拥有的是 UIView 然后你基本上只是在里面画一些东西(在本例中是一条简单的线)。我发现摆脱“灰色”区域的解决方案是不绘制任何东西,而只是转换 UIView 本身。它工作得很好,如果你想要一条完全填充的线,当你想要一条虚线时,问题就来了。

最佳答案

检查 UIBezierPath setLineDash:count:phase: method :

- (void)setLineDash:(const CGFloat *)pattern count:(NSInteger)count phase:(CGFloat)phase` method. 

这允许您绘制虚线。

  1. 首先添加一个CAShapeLayer。将它作为子层添加到您的 UIView。它有一个 path 属性。
  2. 现在创建一个UIBezierPath 的对象。使用 setLineDash 绘制线条。

例如:

 UIBezierPath *path = [UIBezierPath bezierPath];
//draw a line
[path moveToPoint:yourStartPoint]; //add yourStartPoint here
[path addLineToPoint:yourEndPoint];// add yourEndPoint here
[path stroke];

CGFloat dashPattern[] = {2.0f,6.0f,4.0f,2.0f}; //make your pattern here
[path setLineDash:dashPattern count:4 phase:3];

UIColor *fill = [UIColor blueColor];
shapelayer.strokeStart = 0.0;
shapelayer.strokeColor = fill.CGColor;
shapelayer.lineWidth = 5.0;
shapelayer.lineJoin = kCALineJoinMiter;
shapelayer.lineDashPattern = [NSArray arrayWithObjects:[NSNumber numberWithInt:10],[NSNumber numberWithInt:7], nil];
shapelayer.lineDashPhase = 3.0f;
shapelayer.path = path.CGPath;

注意:此答案提供了一个提示,因此您可以根据您的要求即兴创作。

关于iphone - 带虚线的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12091916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com