UView内のフレーム矩形と境界矩形があるのはなぜですか? -- ios フィールド と iphone フィールド 関連 問題

Why is there an frame rectangle and an bounds rectangle in an UIView?












43
vote

問題

日本語

ええ遅くなっているが暗い夜の遅れているのは、2つの異なる長方形がある理由:フレームと境界があります。

私が理解しているように、1つの単一の長方形はすべてをするのに十分なほど十分でした。ビュー自体を別の座標系に比べて位置付けて、その内容を指定されたサイズに切り取ります。 2つの長方形で他に何をしますか?そして、彼らは互いにどのように対話しますか?

誰もが良い説明をしていますか?果物を保持している子供とのリンゴ文書のものは理解にはあまり良くありません。

英語

Well although it's late in the dark night, I don't get it why there are two different rectangles: frame and bounds.

Like I understand it, one single rectangle would have been just enough to do everything. Positioning the View itself relative to another coordinate system, and then clipping it's content to a specified size. What else would you do with two rectangles? And how do they interact with each other?

Does anyone have a good explanation? The one from the Apple docs with the kid holding the fruit is not very good for understanding.

</div
     

回答リスト

84
 
vote
vote
ベストアンサー
 

これはチートシートです:

  • <コード> frame は、ビューの場合(スーパービューに関して)
  • <コード> bounds は、ビューを描くことが許可されている場所(それ自体に関して)
  • です。

いくつかの明確化:

スーパービューでビューを配置している場合は、ほとんどの場合、フレーム起源を変更します。

UIViewが描画されている場所を切り取っている場合は、ほとんどの場合、その範囲を変更します。

フレームよりも大きい境界を持つことが許可されていることに注意してください。つまり、あなたはあなたがいる場所の「行の外側」を描くことができます。

 

Here's the cheatsheet:

  • frame is where the view is (with respect to the superview)
  • bounds is where the view is allowed to draw (with respect to itself)

Some more clarification:

If you are positioning the view in its superview, you almost always change the frame origin.

If you are clipping where the UIView is drawing, you almost always modify its bounds.

Note that you are allowed to have bounds that is bigger than the frame. That is, you can draw "outside the lines" of where you are.

</div
 
 
         
         
5
 
vote

フレームはスーパービューの座標系にあり、境界はビューの座標系にあります。私の視点から、両方を持つのは便利です。いくつかの場合がある限り、フレームは2つにとって有用であるようです、サブビューが全く異なる座標系(例えば、ピクセルが異なるピクセルが異なってスケーリングされた)がスーパービューよりも気づくことができないようです。

 

Frame is in the superview's coordinate system, bounds is in the view's coordinate system. From my perspective, it is a convenience to have both. Frame seems to be the more useful of the two, unless there is some case I am unaware of where a subview can have a completely different coordinate system (e.g. pixels scaled differently) than the superview.

</div
 
 
 
 
2
 
vote

私は最近境界で悩んでいて、いくつかの実験を行ってきました。バインドプロパティは、UIViewが描画できる場所を制限しますが、はそのサブビューを制限しません。他のものの境界コントロールはタッチイベントディスパッチです。これまでに私が言うことができるように、ビューはそうではありません、その範囲外のタッチイベントを受け取ることはできません。さらに、親ビューの範囲外のサブビューもタッチイベントを受信しません。このような状況では、サブビューの変更のサイズと位置として、Container Viewの境界をかなり細心の更新する必要があります。すべてが常に微細に描かれます(サブビューが親の境界によって切り取られていないため)が、タッチは受信されません。

(これは本当に以前の投稿への返事になるはずですが、まだ返信できないので、ここでは立ち往生しています...)

 

I've been having troubles with bounds lately and have done some experimentation. The bounds property does limit where a UIView can draw, but does not limit its subviews. The other thing bounds controls is touch event dispatching. A view will not, as far a I can tell, receive touch events that are outside its bounds. Furthermore, any subview that outside of the parent view's bounds will also not receive touch events. In these situations, you have to pretty meticulously update the bounds of the container view as the size and position of its subviews change. Everything will always draw fine (because subviews aren't clipped by the bounds of their parent) but touches won't be received.

(This really should be a reply to an earlier post, but since I can't reply yet, it's stuck here...)

</div
 
 
     
     

関連する質問

79  アプリのアイコンの強調表示を無効にする方法  ( How to disable highlighting of the app icon ) 
iPhoneのホームページに表示されている間に、私のアイコンに表示される強調表示を無効にするにはどうすればよいですか? ありがとう。 ...

31  私は私のウェブサイトをiPhoneのアイコンに与えるのですか?  ( How do i give my websites an icon for iphone ) 
私が作成したWebサイトの iPhone に適切なアイコンを設定する方法は? ...

3  ネイティブのGoogle MapsアプリケーションではどのKMLフィールドがiPhoneでサポートされていますか?  ( What kml fields are supported in the native google maps application on the iphon ) 
iPhoneアプリケーションでのマップを使用することについての研究をしていますが、私のニーズのほとんどはKMLデータを組み込みのGoogle Mapsアプリケーションに渡すことができるようになりますが、同じ値を設定することはできません(電話、 Mapsアプリ...

1  WebMethodパラメータはNullを維持します  ( Webmethod parameter stay null ) 
私は、.NET WebServiceにSOAPメッセージを送信して複数のWebMethodを呼び出すiPhoneアプリケーションを開発しています。これらのメソッドはデータベースからデータを取得し、これをiPhoneに戻す。 webmethodを呼び出すSOA...

0  iPhoneのネットワーク操作に関してどの画像フォーマットが費用対効果が高いですか?  ( Which image format is cost effective in terms of network operation for iphone ) 
998877666 の tableViewController にサムネイルイメージを表示したい場合、このサムネイルイメージはいくつかのリモートプレイス(アドレスのURLがXMLファイルにあります)にあります。画像のフォーマットは費用効果が高いですか? ...

2  iPhoneアプリケーション占有記憶  ( Iphone application occupied memory ) 
私のiPhoneアプリは、アプリ自体の中からどのような瞬間にどのくらいのメモリを占めるかを見つけることができますか?私はシミュレータにはありません。それを呼び出すためのAPIですか?別のアプローチとして、どのようにしてどのくらいの自由なメモリが与えられた時間に...

3  C ++複数の継承とObjective-C。これはGCCのバグですか?  ( C multiple inheritance and objective c is this is a bug in gcc ) 
私は昨日の奇妙な行動に遭遇しました。それは私にコンパイラのバグのようですか、それとも私が逃したことがありますか?私はFacebookがObjective-CからC ++アダプタクラスを持つiPhoneのObjective-Cクラスでラッピングしていました。 次...

26  アプリケーションから直接AppStoreアプリを起動する方法  ( How can i launch the appstore app directly from my application ) 
アプリから直接iTunesストアを起動するいくつかのアプリを使用しました。私は私の2.1 iPod 2Gを使用しています。 AppStoreのリンクがSafariで働いているのを防ぐための2.1にバグがあることを知っていますが、どういうわけか、Safariを...

73  アップルタッチアイコンの正しいピクセル寸法は何ですか?  ( What are the correct pixel dimensions for an apple touch icon ) 
正しいサイズが何であるかはわかりません。 多くのサイトは、Apple-Touch-Iconが57 x 57ピクセルになるが、それらのソースとして壊れたリンクを引用することを繰り返すように思われる。 href="http://www.hanselman.com...

0  グローバル文字列またはシングルトンは何ですか?  ( What is better global string or singleton ) 
私の真新しいORM( rel="nofollownoreferrer"> chibi-orm )私はデザインの決定に直面しています。 関係のためのAPIを構築しています。 <事前> <コード> @interface SamplePerson : DbObje...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有