Core Graphics no está dibujando una línea en el ancho correcto

Estoy tratando de combinar un borde en una vista UIV con una línea dibujada en drawRect. Yo uso tanto para el mismo ancho. Pero el problema es que a veces el ancho resultante de las líneas dibujadas es el mismo para ambas y otras no, ¡esto incluso cambia con la orientación del dispositivo! Pero incluso sin cambiar la orientación del dispositivo, en general aún no tiene el mismo ancho.

El borde se dibuja con:

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

Por encima de esa vista hay otra vista, que es una subclase de UIView. Ambas vistas tienen el mismo ancho y esta segunda vista cubre la parte superior de la vista anterior. La vista de cobertura utiliza el siguiente código en drawRect para dibujar una línea a la izquierda, que se supone que se alinea perfectamente con el borde de la vista anterior debajo de esta:

<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>

¿Alguna idea de cómo se puede lograr esto? En este momento, aunque el ancho siempre es 1.0f, es solo una coincidencia si ambas líneas se dibujan con el mismo ancho visible.

El objetivo es terminar con algo que se parece a una vista con esquinas redondeadas en la parte inferior, pero con los bordes habituales en la parte superior. Es por eso que estoy haciendo esto. La primera vista tiene las esquinas redondeadas y la segunda vista por encima coincide con el ancho, pero cubre la parte superior, por lo que los bordes redondeados en la parte superior no son visibles.

Captura de pantalla en retrato:

Captura de pantalla en el paisaje:

La vista amarilla está por encima de la vista blanca. Las líneas negras de la vista blanca se dibujan como resultado de view.layer.borderWidth = 1.0f. Las líneas negras a la izquierda y derecha de la vista amarilla se dibujan en drawRect con el código anterior. Los cambios de orientación provocan un redibujado, pero el código de dibujo en sí sigue siendo el mismo. Ambas capturas de pantalla son de un iPhone con pantalla retina (iPhone 4S).

Por lo que puedo decir, todos los valores son "enteros":

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta