Я пытаюсь создать пользовательскую кнопку UIButton, которая должна выглядеть как UIButtonTypeRoundedRect. В моем drawRect: я создаю путь с первым вызовом CGContextMoveToPoint () и четырьмя вызовами CGContextAddArc (). Затем я прохожу путь. Однако в полученном изображении четыре закругленных угла явно толще, чем остальная часть пути.
Я подозревал, что это как-то связано с сглаживанием, поэтому я попытался отключить его с помощью CGContextSetShouldAntiAlias (), но тогда это выглядело еще хуже. Я также пытался экспериментировать с шириной линии, но дуги всегда толще прямых. UIButtonTypeRoundedRect от Apple выглядит отлично, поэтому должно быть возможно как-то решить. У кого-нибудь есть подсказка?
Редактировать: соответствующий код:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextBeginPath(context);
CGContextMoveToPoint(context, rect.origin.x + kRoundedRectButtonRadius, rect.origin.y);
CGContextAddArc(context, rect.origin.x + rect.size.width - kRoundedRectButtonRadius, rect.origin.y + kRoundedRectButtonRadius, kRoundedRectButtonRadius, 3 * M_PI_2, 0, NO);
CGContextAddArc(context, rect.origin.x + rect.size.width - kRoundedRectButtonRadius, rect.origin.y + rect.size.height - kRoundedRectButtonRadius, kRoundedRectButtonRadius, 0, M_PI_2, NO);
CGContextAddArc(context, rect.origin.x + kRoundedRectButtonRadius, rect.origin.y + rect.size.height - kRoundedRectButtonRadius, kRoundedRectButtonRadius, M_PI_2, M_PI, NO);
CGContextAddArc(context, rect.origin.x + kRoundedRectButtonRadius, rect.origin.y + kRoundedRectButtonRadius, kRoundedRectButtonRadius, M_PI, 3 * M_PI_2, NO);
CGContextClosePath(context);
CGContextSetLineWidth(context, 1.7);
CGContextStrokePath(context);