iOS 6 の自動レイアウトは非常に便利です。ただし、自動生成されたフレームには、整数でない値が含まれる場合があります。自動レイアウトを使用して、最終的なフレーム位置とサイズの整数出力を強制するにはどうすればよいですか?
2276 次
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;
}
CGRect
、CGPoint
およびのいくつかのヘルパー関数を次に示しますCGSize
。Gist on GitHub
于 2013-04-29T17:51:31.297 に答える