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); 

} 
+0

为什么当您使用硬编码大小时,矩形会调整大小?如果您想调整其大小,请根据屏幕尺寸(或更好的是,您绘制的视图尺寸)来确定宽度和高度。 – Putz1103

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