1

サイズを変更したい場合は、次のUIViewようにする必要があります。

CGRect frame = view.frame;
frame.size.height -= 100;
view.frame = frame;

代わりに:

view.frame.size.height -= 100;

私の質問は、この背後にあるロジックは何ですか? frame多分 call のような何か特別なことをするためのセッターsetNeedsDisplayですか?

4

1 に答える 1

3

基本的にその背後にある理由は、次の行です

view.frame.size.height -= 100;

実際には次の2つのことを行います:

  1. 構造体[view frame]を返すメソッドを呼び出します -ビューに保存されているもののコピーCGRect
  2. 次にheight、コピーのフィールドを変更します-ビューに格納されている構造の値には影響しません

setNeedsDisplay を呼び出すなど、フレームのセッターは特別なことをしていますか?

実際にはそうです - ビューのframeプロパティはその起点、境界、および変換に基づいて計算されるため、フレームを設定するとその起点と境界にも影響します (ビューの contentMode によっては、ビューが強制的に再描画される場合があります)。

于 2012-05-22T22:07:57.560 に答える