IOS: дисплей drawRect 1px по углам - PullRequest
0 голосов
/ 30 января 2012

Я использую drawRect внутри пользовательской кнопки UIB, чтобы нарисовать кнопку с рамкой и изображением внутри. Код следующий:

- (void) drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();

//Draw a rectangle
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextSetStrokeColorWithColor(context, [[UIColor grayColor] CGColor]);
//Define a rectangle
CGRect drawrect = CGRectMake(CGRectGetMinX(rect),CGRectGetMinY(rect),rect.size.width,rect.size.height);

CGContextStrokeRect(context,drawrect);}

Проблема в том, что на углах я получил дополнительный пиксель (см. Прикрепленное изображение). Что я делаю не так?

enter image description here

спасибо

1 Ответ

6 голосов
/ 30 января 2012

Вы рисуете прямоугольник по краям пикселей, а не по центрам пикселей.Таким образом, ваш прямоугольник покрывает только половину большинства пикселей.По углам она покрывает три четверти пикселей.

Чтобы рисовать по центрам пикселей, необходимо использовать полуцелые координаты.Попробуйте это:

CGContextStrokeRect(context, CGRectInset(rect, 0.5, 0.5));
...