CGSize cgs = CGSizeMake(250.0, 300.0);
UIGraphicsBeginImageContext(cgs);
CGRect rectangle = CGRectMake(0,0,cgs.width,cgs.height);
UIImage *myImage = [UIImage imageNamed:@"BMW.jpg"];
[myImage drawInRect:rectangle];
[myImage release];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 5.0);
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0);
CGContextStrokeRect(context, rectangle);
UIImage *testImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[testImg drawAtPoint:CGPointMake(35, 10)];
我希望在绘制图像的图像和矩形边框之间留出间隙,例如在左上角5和右上角5但在底部大约30,因为它是用户将要写入的文本空间,用户也可以选择他/她想要文本在顶部,所以在这种情况下,顶部间隙将是30,底部间隙将是5.这是在drawrect方法中uiview的子类内部的代码。
使用此代码边框和图像紧密绑定在一起,我无法在边框和图像之间给出间隙。知道我该怎么办?
提前致谢。
答案 0 :(得分:2)
首先,你有一个严重的错误。此行错误:
[myImage release];
您不拥有myImage
,因此您应该不发布它。您需要阅读Cocoa Core Competencies中的“内存管理规则”。或者您应该打开ARC(自动引用计数),然后编译器将负责为您发布内容。由于自iOS 4.0以来支持ARC,因此如果您正在开发新的应用程序,几乎可以肯定使用它。
关于图像绘制,您只需要修改绘制图像的矩形。例如,您可以在顶部,左侧和右侧留下5像素边框,在底部留下30点边框,如下所示:
CGRect imageRect = CGRectInset(rectangle, 5, 5); // move 5 points in on all sides
imageRect.size.height -= 25; // make it another 25 points shorter
[myImage drawInRect:imageRect];
如果您希望将30点边框置于顶部,则还需要修改imageRect.origin.y
。