У меня такая же ситуация: вертикальные и горизонтальные черные линии становятся серыми.
Похоже, что "привязанные" координаты UiView для пикселей, а не CALayer.
Мое решение этой проблемы состоит в том, чтобыдобавить 0,5 на coodinates.
CGRect bounds_on_pixels(const CGRect& bounds) {
const float f = 0.5f;
return CGRectMake(bounds.origin.x+f, bounds.origin.y+f, bounds.size.width-1.f, bounds.size.height-1.f);
}
Примечание: -1.f по размеру является факультативным.
Пример использования с CAShapeLayer и UIBezierPath
CAShapeLayer* shape_layer = [CAShapeLayer layer];
// initialize shape_layer...
shape_layer.path =
[
UIBezierPath bezierPathWithRoundedRect:bounds_on_pixels(self.view.bounds)
byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
cornerRadii:CGSizeMake(10.0, 10.0)
].CGPath;
// add shape_layer: [self.view.layer insertSublayer:shape_layer atIndex:0];
@ tonklon: спасибо за идею!