2011-10-28 3 views
2

私はiOS開発の新人です。私がしたいことが可能かどうかは分かりません。 基本的に私はWebサービスを介していくつかの製品を取得していますが、画面ごとに1行につき4つの正方形を表示したいと思います。これらの四角形(画像と製品名)のそれぞれは、.h、.m、xibファイルを持つUIViewです。私はこのような各ビューの作成:XIBでサイズを設定し、UIViewに収まるようにすべてのスケールを設定することは可能ですか?

CategoryItemView *catItem = [[[NSBundle mainBundle] loadNibNamed:@"CategoryItemView" owner:self options:nil] objectAtIndex:0]; 
[categoryItems addObject:catItem]; 

を、私はそれが好きな体位:

while (colCount < cols && items < [categoryItems count]) { 
    CGRect viewRect = CGRectMake(x * colCount + pad , (row * (x-pad)) + pad*row + pad, x - pad, x - pad); 
    CategoryItemView* myView = [categoryItems objectAtIndex:items]; 
    myView.frame = viewRect; 
    [self.view addSubview:myView]; 

    colCount++; 
    items++; 
} 

は私がすべての要素をレイアウトすることができますので、XIBを使用します。しかし、私はxibをレイアウトする方法を見つけることができないので、UIViewを配置するときに、すべての要素がUIViewに相対的な位置に収まるようにスケーリングされるようにします。これは可能ですか?

更新:あなたがここに2クラスの例を見ることができhttp://home.glasscubes.com/share/s/d57sb19

おかげ

答えて

2

autoresizingMaskは、あなたがそれらのビュー上を探しているプロパティでの作業ではないthatsの。ドキュメントから

autoresizingMask

そのスーパーの境界が変更されたとき、受信機は、それ自体 サイズ変更方法を決定する整数ビットマスク。

@property(アトミック)UIViewAutoresizing autoresizingMask

議論

ビューの境界が変化し、そのビューが自動的に各サブビューの自動サイズ変更マスクに従ってその サブビューをリサイズ。 に記述されている定数を組み合わせることにより、このマスクの値を と指定します。Cビット単位のOR演算子を使用したUIViewAutoresizing。これらの値を組み合わせると、ビューのどのサイズを拡大するかを指定したり、 をスーパービューに対して縮小したりすることができます。このプロパティのデフォルト値は で、UIViewAutoresizingNoneはビューが に変更されていないことを示します。

同じ軸に複数のオプションが設定されている場合、デフォルトの の動作は、フレキシブル部分の にサイズ差を比例して分散させることです。フレキシブル部分が大きいほど、他のフレキシブル部分に比べて、より多く成長する可能性が高い。例えば、 は、このプロパティはUIViewAutoresizingFlexibleWidthと UIViewAutoresizingFlexibleRightMargin定数を含むが、このようにして図の左余白の幅が固定されていることを を示す定数 UIViewAutoresizingFlexibleLeftMarginを含まないが、ビューの 幅及び右マージンを変更することができると仮定する。したがって、ビューは、ビューの右側にあるビューの幅とギャップの両方が増加する間に、そのスーパービューの左側に に固定されて表示されます。

自動サイズ変更動作を使用すると、カスタムコンテナビューを使用して、より正確に、あなたのサブビューを配置する そのlayoutSubviewsメソッドをオーバーライドすることができ、あなたの意見のために必要な 正確なレイアウトを提供しない場合。

+0

ありがとうが、これは違いがないようです。 IBでシミュレートされたメトリックなどを設定する必要はありますか? mt UIViewが終了すると、約150 pts四方です。 IBでUIViewを見ると、フルサイズです。メトリックをFreeformに設定すると、サイズを小さくすることはできますが、サイズの変更はしません。これで失われたビット。 – wjp

+0

すべてのビューでマスクを設定しましたか?マスクの設定方法を教えてください。 – sosborn

+0

私はIBで設定されたすべての良い自動サイズ設定プロパティを持っていますが、今ではself.view.autoresizesSubviews = YESも追加しました。 self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;ビューへ – wjp