2009-07-20 15 views
1

私はObjective-Cのでは比較的新しいんだ...私はiphone 3.0 SDKを使用していXcodeのObjective-Cの警告は

私は特定の状況下でサイズを変更すること、サブビューでのUIViewを、持っています。

私はそれを行う方法は、コントローラクラス内にあります。例えば

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

上記のコード作業を行いますが、コンパイラは警告できます:場合」、いくつかのレベルでは

: 'UIViewの' 'のsetSize' に応答しないことをそれは壊れていない、私はそれを修正したくない "しかし、私は少し間違っていることを少し心配しています。

私は警告を取得していますなぜ、どのように私はそれを修正することができますように任意のアイデア?おそらくUIViewためsetSizeがimplmentedされているが、それはプロジェクトにインポートされたヘッダファイルに示されていないことを意味し

TIA

+0

ありがとうございます! – user141146

答えて

3

。つまり、文書化されていないAPIになり、すなわち1日、それはあなたのコードを変更し、破損することがあり:)

そして、あなたはあなたのサイズプロパティへのrefrenceを見つけませんのUIViewのドキュメントに行けば十分に確認してください。だから私はそれを避けるだろう。

あなたが代わりに使用すべきことはframeプロパティ

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

はショットという付けています。

+0

'frame'メソッドはフレームを値で返します。そのようなサイズは設定できません。 'CGRect frame = self.subview.frame;のようなものをする必要があります。 frame.size = CGSizeMake(30,40); self.subview.frame = frame; ' – Chuck

+0

私はドキュメントをチェックしただけで正しい – hhafez

0

ここで行うには正しいことではなく、非公共size財産の何か他のものを使用しています。しかし、議論のために:あなたは警告を取り除くしたい場合は、あなたがあなたの実装ファイルの先頭にどこかsize性質について知ることを宣言することができます。

#import "MyClass.h" 

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

@implementation MyClass 
… 
@end 

コンパイラが文句を停止します。ここで

0

は「MYVIEW」を「フレーム」プロパティを使用して、近い説明です:

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

: 基準にしたビューの左上隅座標

  • のx、その親の左上隅「x」座標。
  • Y、Xが、y軸と同じ
  • 幅、フレームの水平サイズ
  • 高さ、フレーム

すなわちの縦サイズあなたは画面境界に合ったビューを持っているので、その座標(0,0)はあなたのデバイスの画面の左上隅と同じになります。 あなたがサブビューを追加したい場合はかろうじて小さい画面サイズと中央それはそれは水平方向と垂直方向には、ここで設定されています

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

この例では、ビュー内のフレームを設定し、センタリング。 20の左辺、20の右辺に対応する幅に40を引くことに注意してください。したがって、縦の調整でも同じです。

このコードは、ポートレートモードとランドスケープモードでも動作します。