1

私は客観的なcに比較的慣れていません...私はiphone 3.0 SDKを使用しています

特定の状況下でサイズを変更したいサブビューである UIView があります。

私がそれを行う方法は、コントローラークラス内です。

例えば、

CGSize el = CGSizeMake(30, 40);
[self.subview setSize:el];

上記のコード機能しますが、コンパイラは次の警告を出します: 'UIView' may not response to 'setSize:'

ある意味「壊れてないなら直したくない」って言ってるけど、自分が何か間違ってるんじゃないかってちょっと不安。

なぜ警告が表示されるのか、どうすれば修正できるのかについてのアイデアはありますか?

ティア

4

3 に答える 3

3

これはおそらくsetSizeforUIViewが実装されていることを意味しますが、プロジェクトにインポートされるヘッダー ファイルには表示されません。つまり、ある日、コードが変更されて壊れる可能性があります:)

確かに、UIView のドキュメントにアクセスすると、サイズ プロパティへの参照が見つかりません。だから私はそれを避けます。

代わりに使用する必要があるのはframeプロパティです

CGSize el = CGSizeMake(30, 40);
CGRect bounds = CGself.subview.bounds;
bounds.size = el;
CGself.subview.bounds = bounds;

それを試してみてください。

于 2009-07-20T03:41:20.910 に答える
0

ここで行うべき正しいことは、非パブリックsizeプロパティの代わりに別のものを使用することです。ただし、議論のために: 警告を取り除きたい場合はsize、実装ファイルの先頭のどこかでプロパティについて知っていることを宣言できます。

#import "MyClass.h"

@interface UIView (private)
- (void) setSize: (CGSize) newSize;
@end

@implementation MyClass
…
@end

コンパイラは不平を言うのをやめます。

于 2009-07-20T03:59:04.557 に答える
0

「myView」の「frame」プロパティを使用した詳細な説明は次のとおりです。

[self.myView.frame = CGRectMake(x, y, width, height)];

どこ:

  • x、ビューの左上隅の座標は、親の「x」座標の左上隅を参照します。
  • y、x と同じですが、y 軸
  • フレームの幅、横サイズ
  • 高さ、フレームの縦サイズ

iE 画面の境界に収まるビューがあるため、その座標 (0,0) はデバイス画面の左上隅と同じになります。画面サイズよりわずかに小さいサブビューを追加し、水平方向と垂直方向の中央に配置する場合は、次のように設定します。

[self.myView.frame = CGRMake ( 20 , 20 , self.view.frame.size.width-40, self.view.frame.size.height-40);

この例では、フレームをビュー内の中央に設定します。左側 20、右側 20 に対応する幅から 40 を引くことに注意してください。垂直方向の調整についても同様です。

このコードは、縦向きおよび横向きモードでも機能します。

于 2015-09-09T16:28:31.767 に答える