drawRect不会调整大小和运行屏幕3.5英寸屏幕
问题描述:
我正在使用绘制矩形绘制带有圆角半径的矩形。代码完美工作。在4英寸屏幕上查看时,您会看到矩形。在3.5英寸屏幕上查看时,矩形不会调整大小并从屏幕底部运行。任何指针?drawRect不会调整大小和运行屏幕3.5英寸屏幕
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect rrect = CGRectMake(20, 30, 280, 515);
CGFloat radius = 7;
CGFloat minx = CGRectGetMinX(rrect), midx = CGRectGetMidX(rrect), maxx = CGRectGetMaxX(rrect);
CGFloat miny = CGRectGetMinY(rrect), midy = CGRectGetMidY(rrect), maxy = CGRectGetMaxY(rrect);
// Start at 1
CGContextMoveToPoint(context, minx, midy);
// Add an arc through 2 to 3
CGContextAddArcToPoint(context, minx, miny, midx, miny, radius);
// Add an arc through 4 to 5
CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius);
// Add an arc through 6 to 7
CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
// Add an arc through 8 to 9
CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius);
// Close the path
CGContextClosePath(context);
CGContextSetStrokeColorWithColor(context, [[UIColor whiteColor] CGColor]);
CGContextSetRGBFillColor(context, 255, 255, 255, 1.0);
// Fill & stroke the path
CGContextDrawPath(context, kCGPathFillStroke);
}
答
CGRect rrect = CGRectMake(20, 30, 280, 515);
这就是问题所在。你绘制矩形的高度为515,起点偏移20,而你的屏幕不长。尝试使用视图的框架绘制而不是硬编码的值
CGRect rrect = CGRectMake(20, 30, self.frame.size.width - 20*2, self.frame.size.height - 30*2);
+0
谢谢!完美的作品。 – user2920762
为什么当您使用硬编码大小时,矩形会调整大小?如果您想调整其大小,请根据屏幕尺寸(或更好的是,您绘制的视图尺寸)来确定宽度和高度。 – Putz1103