我正在尝试使用UIBezierPath。我想制作一个网格视图。
NSInteger yAxisIncremental = 0;
NSInteger xAxisIncremental = 0;
UIBezierPath *path = [UIBezierPath bezierPath];
path.lineWidth = 1;
for (int x = 0; x <5; x++) {
[path moveToPoint:CGPointMake(xAxisIncremental, 0)];
[path addLineToPoint:CGPointMake(xAxisIncremental, self.frame.size.height)];
xAxisIncremental = xAxisIncremental + kWidthOfSquare;
}
for (int x = 0; x <=5; x++) {
[path moveToPoint:CGPointMake(0, yAxisIncremental)];
[path addLineToPoint:CGPointMake(self.frame.size.width, yAxisIncremental)];
yAxisIncremental = yAxisIncremental + kHeightOfSquare;
}
[[UIColor blackColor] setStroke];
[path stroke];
注意第一行很薄,相应的行有点粗。我在代码中做错了什么或者是预期的行为?
答案 0 :(得分:0)
您要绘制的第一行从0开始。这意味着该行宽度的一半可能在屏幕外或视图之外。你可以从像素0.5而不是0开始解决这个问题。
此外,如果您选择线宽为1.0,这意味着在高dpi设备上,线条将比屏幕上的1个实际像素厚。要绘制宽度为1px的行,您可以使用UWezierPath文档中所述的lineWidth 0:
宽度为0被解释为可以在特定设备上呈现的最细线。
答案 1 :(得分:0)
以下是一些示例代码,用于生成带有笔划安全区域的矩形点。
objective-c
UIBezierPath *aPath = [UIBezierPath bezierPath];
CGFloat safeArea = 1.5;
CGFloat minX = rect.origin.x+safeArea;
CGFloat minY = rect.origin.y+safeArea;
CGFloat maxX = rect.origin.x+rect.size.width-safeArea;
CGFloat maxY = rect.origin.y+rect.size.height-safeArea;
//draw your rectangle with stroke safe area*2
...
。