Я пытаюсь нарисовать прямоугольник на моем подклассе UIView, и все работает, за исключением удвоения ширины линии (я использую iPhone Simulator atm, в версии 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)
Или я что-то упускаю?