我想在我的UIView子類上繪製一個矩形,並且除線條的寬度加倍外,所有東西都在工作(我使用的是iPhone模擬器atm,Retina版本)。在iPhone上用Core Graphics繪製一個矩形
這是drawRect方法:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect innerRect = CGRectInset(rect, 5, 5);
CGContextSetStrokeColorWithColor(context, [[UIColor whiteColor] CGColor]);
CGContextSetLineWidth(context, 2);
CGContextMoveToPoint(context, CGRectGetMinX(innerRect), CGRectGetMinY(innerRect));
CGContextAddLineToPoint(context, CGRectGetMaxX(innerRect), CGRectGetMinY(innerRect));
CGContextAddLineToPoint(context, CGRectGetMaxX(innerRect), CGRectGetMaxY(innerRect));
CGContextAddLineToPoint(context, CGRectGetMinX(innerRect), CGRectGetMaxY(innerRect));
CGContextClosePath(context);
CGContextStrokePath(context);
}
此代碼繪製一個矩形在正確的位置,但與寬度4像素,而不是指定的2px的。
尋找在互聯網上,我看我可能需要設置比例因子,所以我嘗試添加:
self.contentScaleFactor = [UIScreen mainScreen].scale;
self.layer.contentsScale = [UIScreen mainScreen].scale;
在方法的開始,當沒有工作,我想:
self.contentScaleFactor = 2;
self.layer.contentsScale = 2;
(如2是應該由對視網膜顯示scale
方法返回的數) 而這也不能工作。
這只是模擬器的一個問題,當我在設備上運行它時會被修復嗎? (我把它升級到5.1,但忘了更新Xcode,所以我現在2小時進入7小時等待Xcode更新完成下載)
還是有東西我失蹤了?
您可以使用[CGContextStrokeRectWithWidth函數]保存大量代碼(http://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGContext/Reference/reference.html#// apple_ref/C/FUNC/CGContextStrokeRectWithWidth)。 –
@PeterHosey,我知道,我實際上畫了一個圓角矩形,我剛剛擺脫了弧線代碼並簡化了座標,使問題更容易閱讀。 –