18

iOS 6 の自動レイアウトは非常に便利です。ただし、自動生成されたフレームには、整数でない値が含まれる場合があります。自動レイアウトを使用して、最終的なフレーム位置とサイズの整数出力を強制するにはどうすればよいですか?

4

2 に答える 2

10

AutoLayout は、あなたが思っているよりもスマートです。

自動生成されたフレームが小数値を持つことができるのは事実ですが、デバイスのピクセル比率に一致するように丸められます。Retina ディスプレイ (2x) を搭載したデバイスでは、0.5 の端数が許可されます。古いデバイスでは、小数値はまったくないようです。

これは、常にピクセル パーフェクトなレイアウトが得られることを意味します。

しかし、これを理解するのにかなりの時間がかかりました。:)

于 2013-05-06T14:28:03.667 に答える
3

あなたが答えとして「いいえ」を受け入れない限り、私はあなたの質問に答えることができません.

自動レイアウトではなく手動レイアウトを使用すると、同様の問題に直面しました。私の解決策は誰かに役立つかもしれません。

このコードは、座標を画面スケールに丸めます。つまり、標準ディスプレイでは整数に、Retina ディスプレイでは半分 (0.5; 1; 1.5; …) になります。

CGFloat roundToScreen(CGFloat value) {
    CGFloat scale = [[UIScreen mainScreen] scale];
    CGFloat result = round(value * scale) / scale;
    // example value: 3.61
    // on standard display: 4
    // on Retina display: 3.5
    return result;
}

CGRectCGPointおよびのいくつかのヘルパー関数を次に示しますCGSize。Gist on GitHub

于 2013-04-29T17:51:31.297 に答える