9

UIView のフレーム サイズをリセットしたいので、次のように書きました。

view.frame.size.width = x;

しかし、それはうまくいきません、誰かが理由を教えてもらえますか?

4

4 に答える 4

18

幅を直接設定することはできません。これを行ってください

CGRect frm = view.frame;
frm.size.width = x;
view.frame = frm;
于 2012-05-22T08:49:59.547 に答える
7

呼び出すview.frameと、frame rectプロパティのコピーが取得されるため、これを設定するとframe.size.width、ビューのフレームサイズではなく、コピーの幅が変更されます。

于 2012-05-22T08:54:46.957 に答える
3

ここに理由の 1 つのパスがあります。あなたのコードはに変換されます

[view frame] // <- This hands you a CGRect struct, which is not an object.
             //    At this point, view is out of the game.
.size        // <- On the struct you were handed
.width       //             "
= x;         // <- the struct you were handed changed, but view was untouched

もう 1 つの考え方は、アクセスできない目に見えない変数がそこにあるということです。

 CGRect _ = [view frame]; // hands you a struct
 _.size.width = x;
于 2014-05-27T23:15:25.320 に答える