7

これは私のコードです:

int columns 3;
int columnWidth = self.layer.bounds.size.width / 3;

for (int c = 1; c < columns; c++) {
    CALayer *layer  = [CALayer layer];
    layer.frame = (CGRectMake(columnWidth * c + 0.5, 0.5, 1, self.layer.bounds.size.height));
    layer.backgroundColor = myColor;
    [grid addSublayer:layer];
}

x と y を 0.5 ピクセルずらす必要があることは理解していますが、これは私が行ったことですが、1 ではなく 2 ピクセルの線として表示されます。

ここに画像の説明を入力

4

2 に答える 2

19

誰にとっても役立つ場合に備えて、先に進んで説明画像を作成しました

ここに画像の説明を入力

正確なピクセル座標の下の線はぼやけて見えます...線の幅の各半分はピクセルの異なる行にあります...

上の線はオフセットされてline_width/2.0おり、シャープに見えます...完全にピクセルの行内にあります。

于 2013-02-26T19:41:30.867 に答える
3

レイヤーフレームを次のように設定します

layer.frame = (CGRectMake(columnWidth * c + 0.5, 0.5, 0.5, self.layer.bounds.size.height));

はい、Retinaでも機能します

この投稿を確認してくださいSection 1 Point Lines and Pixel Boundaries .It はよく説明されています

于 2013-02-26T19:00:51.047 に答える