2012-04-16 5 views
3

私のiPhoneアプリケーションのいくつかの場所でコード内の定数座標を使用しています。特に、プログラムでビューを作成しているとき、uiviewサブクラス。iPhoneの生産コードで一定のx/y座標を使用することは安全ですか

例:

UIImage* img = [UIImage imageNamed:@"background.png"]; 
UIImageView *imgView = [[[UIImageView alloc] initWithImage: img] autorelease]; 
imgView.center = CGPointMake(160, 175); // --> Are these constant usages safe? 
[self.view addSubview: imgView]; 

私は、3Gおよび4Sの両方、シミュレータ上のデバイスを、それをテストして、それが動作します。 今後のデバイスの解像度やその他の不具合について心配する必要がありますか? もしそうなら、私はどのようにしてこのコードをより安全にするべきですか?コーディングの原則はどこですか?

おかげ MBH

答えて

3

ほとんどの場合、大したことではありませんが、参照を使用する方が常に良いです。

たとえば、イメージビューが画面の中央にある場合は、160の代わりにscreensize.width/2を使用できます。これは理論的には同じですが、まず自分が何をしているのかがはっきりしています。あなたは準備ができていました。もう1つの例は、44の代わりにnavigationBar.frame.size.heightを使用することです(とにかく変更される可能性は低い)。 また、あなたが寝かせた他のビューを参照し、あなたが1つ移動した場合、それらのビューはすべて一緒に移動します。

要するに、参照がある場合はそれを使用したり、使用したり、そうでない場合は心配しないでください。

+0

これは正しいことですが、iOSが現在異なる画面サイズ間の翻訳を自動的に処理することを指摘しています。つまり、古い電話機に行く場所である(160,175)と、自動的に(320,350)に行く新しい電話機に指定します。私は彼らが他の新しい解決法を追加してもそれを扱うと仮定しますが、答えが示すように、もし可能ならば、おそらく何かを手に入れたほうがよいでしょう。 – clarky

+0

はい、これは(一部のUI要素のサイズと同様に)将来変更される可能性があります。チャンスは低いですが、準備する方が良いです。また、コードをiPadに移植する場合は、すべてのハードコードされた値を変更する必要があります。 – EmilioPelaez

+0

私は同意します。ちょうどOSが現在どのように動作しているかを指摘したい。 iPadへの移植に関しては、iPhoneの場合とほとんど同じ値を使用しているわけではありません。それは再設計する必要があり、それでは、とにかく完全に別個のコードを持つでしょう。 – clarky

0

多分 - あなたはちょうどあなたと対話するAPIをより詳細に値を解釈する方法を知っておく必要があります。スペースが反転していますか?あなたが呼んでいるAPIはポイントでそれを解釈しますか?ピクセル?デカルト座標?

関連する問題