2009-07-13 7 views
2

1-3ボタンを実装したビュー(実際はUITableViewのフッターに入ります)を実装したいと思います。これらのボタンのレイアウト(およびボタン自体のサイズ)は、どのボタンが表示されているかによって変わります。私が望むほぼ正確な動作の例は、特定の連絡先(「お気に入りに追加」がクリックされたときに消え、他のボタンが展開するときに表示されるときに連絡先アプリケーションの「情報」画面の一番下に表示されます素敵なアニメーションの利用可能なスペース)。ハード・コーディング・ポジションのない動的なボタン・レイアウト

私はさまざまなレイアウトシナリオを実行しているので、これらの値をすべてコーディングしていると思います。「これは私がやっている方法ではありません」

Interface Builderには、ルーラータブでこれを実現する機能がいくつかありますが、電話機でどのように動作するのか把握できれば気になります。

私に正しい方向に向けるために何か提案やオンラインチュートリアルがありますか?

ありがとうございました。

答えて

0

あなたは、私は、彼らがprogramaticaly彼らはビューをアニメーション化ボタンの自動サイズ変更や他のいくつかの設定をレッスン/例の一つではデモがあると思い Stanford cs193p classes

を見てみることができます。 ビューの各サブビューの幅を(ownWidth/numberofSubView)に動的に設定することもできます。これは各要素の位置について同じです。

[編集]そう?それは、「ダイナミック」ではありませんまだ、あなたのアイデア あなたがボタンを「追加/削除」とき/減少numberOfbuttonsを増やすことができますを持っているすべてのサブビュー

- (void)loadView 
{ 

UIView *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
view.backgroundColor = [UIColor lightGrayColor]; 
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

int numberOfbuttons = 2; 
CGFloat buttonsLegth = (-20+view.bounds.size.width)/numberOfbuttons-20; 
for(int i=0;i<numberOfbuttons;i++){ 
    CGRect buttonFrame = CGRectMake(0, 0, buttonsLegth, 37); 
    buttonFrame.origin.x = (buttonFrame.size.width+20)*i + 20.0; 
    buttonFrame.origin.y = 20.0; 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // Autoreleased 
    button.frame = buttonFrame; 
    [button setTitle:@"Done" forState:UIControlStateNormal]; 
    [view addSubview:button]; 
    } 
self.view = view; 
[view release]; 
} 
+0

エヴァンは、レッスン6でUIViewの自動サイズ設定のマスク設定について言及していますそれは私が探しているものではありません。私の見解は、サイズや形を決して変えません。表示されているボタンに応じて、ビュー内のボタンのレイアウトが変わります。 – mmc

+0

あなたはあなたがこれに欲しい答えを得ましたか?私は同じディレマに直面しており、実行時にサイズ計算などの簡単な方法があると信じなければなりません。 – user282172

0

の新しいフレームをリセットハイテクですべてのボタンを削除しますビューは、と......あなたが

-(void)addButtons:(int)numberOfButtons ToView:(UIView *)containerView; 
{ 
    CGRect containerRect = containerView.frame; 

    CGFloat padding = 5.0; 
    CGFloat width = (containerRect.size.width - (padding*numberOfButtons+1))/numberOfButtons; 
    for (int i = 1; i<=numberOfButtons; i++) 
    { 
     UIButton * btn = [[[UIButton alloc] initWithFrame:CGRectMake(i*padding+width, 0, width, containerRect.size.height)]autorelease]; 

     //set Button Properties like Target,backColor,Title,,,,etc MUST SET TAG TO ACCESS THEM IN CLICK METHOD IF YOU ARE USING SAME SELECTOR FOR ALL BUTTONS. 

     [containerView addSubview:btn]; 
    } 

} 

はこれを試してみて、楽しみを持っているこれらのボタンを追加するには、あなたがボタンの数を渡す必要があり、この方法... とのUIViewを使用して再度追加

関連する問題