2017-07-31 13 views
0

私は、オートレイアウトで設定された高さ0.5ピクセルのテキストフィールドとセパレータビューをいくつか持っています。高さ= 0.5のビューがiPadでは必ずしも表示されない2

問題:セパレータの一部が見えない

は時々、他の回は、彼らが目に見えるようになるが、いくつか他の人が代わりに見えなくなります。

iPad 2は網膜ディスプレイを持たず、1ピクセル未満のものは0ピクセルまたは1ピクセルに丸められますか?

もしそうなら、そのようなデバイスで常に1ピクセルのサイズになるのが最も簡単な方法は何ですか?私はRetinaディスプレイ上に0.5の高さとそうでなければ1ピクセルを持つセパレータ用のカスタムUIViewサブクラスを作ることを考えていました。

答えて

1

ビューの高さを0.5に設定すると、さまざまな画面で問題が発生します。 iPad 2では、網膜スクリーンを持たず、したがって0.5ptのラインに対応するピクセルがないので、ビューが全く見えなくなることがあります。 3倍のスクリーンを備えたiPhone Plusでは、エイリアス効果を得る可能性が最も高いでしょう。

さまざまな画面に細い線を適切に設定するには(たとえば、Appleがテーブルビューセパレータを使用しているようなものです)、画面に基づいて幅を計算する必要があります。

のObjective-C:あなたの受信機を考える

を設定するラインビューを所有しているUIViewあり、これはトリックを行う必要があります CGFloat lineHeight = 1.0/self.contentScaleFactor;

スウィフト: let lineHeight = 1.0/contentScaleFactor

あなた可能性そうするビュー内ではdidMoveToWindowにあります。ウィンドウを移動すると理論的にスケールが変わる可能性があります。これはiOSではまれですが、外部画面に表示される可能性があります。

1

網膜の問題のような音です。

あなたが作ることができるのは、ビューの幅/高さが1未満で画面が非網膜であるかどうかをチェックするUIViewクラスの拡張です。それに応じて1または0に丸めます。

希望すると便利です。

関連する問題