Core Graphics не рисует линию на правильной ширине

Я пытаюсь объединить границу на UIView с линией, нарисованной в drawRect. Я использую для обоих одинаковую ширину. Но проблема в том, что иногда полученная ширина нарисованных линий одинакова для обоих, а иногда нет - это даже зависит от ориентации устройства! Но даже без изменения ориентации устройства его ширина, в общем, все же не одинакова.

Граница рисуется с:

<code>view.layer.borderColor = [UIColor blackColor].CGColor;
view.layer.borderWidth = 1.0f;
</code>

Над этим представлением находится другое представление, которое является подклассом UIView. Оба вида имеют одинаковую ширину, и этот второй вид покрывает верхнюю часть представленного выше вида. Покрывающее представление использует следующий код в drawRect, чтобы нарисовать линию слева, которая должна идеально совпасть с границей вышеупомянутого представления ниже:

<code>CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat x = self.bounds.origin.x;
CGFloat y = self.bounds.origin.y;
CGFloat width = self.bounds.size.width;
CGFloat height = self.bounds.size.height;

CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextSetLineWidth(context, 1.0f);

// Left line
CGContextMoveToPoint(context, x, y);
CGContextAddLineToPoint(context, x, height);
CGContextStrokePath(context);

// Right line
CGContextMoveToPoint(context, width - 1.0f, y);
CGContextAddLineToPoint(context, width - 1.0f, height);
CGContextStrokePath(context);
</code>

Есть идеи, как этого достичь? Прямо сейчас, даже если ширина всегда равна 1,0f, это просто совпадение, если обе линии нарисованы с одинаковой видимой шириной.

Цель состоит в том, чтобы получить нечто, похожее на вид с закругленными углами внизу, но обычными краями сверху. Вот почему я это делаю. Первый вид имеет закругленные углы, а второй вид сверху соответствует ширине, но покрывает верхнюю часть, поэтому закругленные углы сверху не видны.

Скриншот в портрете: enter image description here

Скриншот в пейзаже: enter image description here

Желтый вид выше белого. Черные линии белого вида отображаются в результате view.layer.borderWidth = 1.0f. Черные линии слева и справа от желтого вида рисуются в drawRect с кодом выше. Изменения ориентации вызывают перерисовку, но сам код чертежа остается прежним. Оба снимка экрана сделаны с iPhone с дисплеем Retina (iPhone 4S).

Насколько я могу судить, все значения являются "целыми числами":

<code>x: 0.000000, y: 0.000000
width: 264.000000, height: 10.000000
frame.origin.x: 33.000000, frame.origin.y: 38.000000
</code>

Ответы на вопрос(1)

Ваш ответ на вопрос