Я пытаюсь нарисовать прямоугольник в своем подклассе UIView, и все работает, за исключением того, что ширина линии удваивается (я использую банкомат iPhone Simulator в версии Retina).
Это метод 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 пикселя, а не указанными 2 пикселями.
Глядя в Интернет, я вижу, что мне, возможно, придется установить коэффициент масштабирования, поэтому я попытался добавить:
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
. - person Peter Hosey   schedule 04.12.2011