0

私は自分のアプリケーションViewControllerUIScrollView

これでUIScrollView私は多くUIButtonのを持っています。触れたボタンの下にあるボタンを1つ押すと、UIView彼の入り口をアニメーションで表示したいと思います。アコーディオンのように、次のように: Jquery demo

現在、「アコーディオン」を開くには、次の方法があります。

-(void) openView:(UIView *)view inFrame:(CGRect)final {
  CGRect frame = view.frame;
  frame.size.height = 0;
  frame.origin = finalFrame.origin;
  view.frame = frame;

  [self.buttonsView addSubview:view];

  [UIView animateWithDuration:1.0 animations:^{
    view.frame = finalFrame;
  } completion:^(BOOL finished){
  }];
}

これself.buttonsViewは、UIView私が内部で使用するものscrollviewです。

この方法を使用すると、ボタンの直後にビューを挿入できます。しかし問題は、ボタン間のスペースを開けて拡大できないことです。buttonsView

これを行う方法はありますか?

button1
button2
button3

ボタン 2 がクリックされました:

button1
button2
a view
button3

ボタン 2 をもう一度クリック:

button1
button2
button3

そして、私は使用できませんUITableView

4

2 に答える 2

0

openView:inFrame:タップしたボタンの下にあるすべてのボタンのフレームもアニメーション化するようにメソッドを変更します。

于 2012-11-19T04:10:51.347 に答える
0

これを試してください

//.h ファイルで 1 つの変数を宣言します

IBOutlet UIButton *btnpreviouslySelected;
CGRect customerButtonFrame,inventoryButtonFrame,templatesButtonFrame;

btnCustomer、btnInventroy、btntemplate が 3 つのボタンであると考えて、それぞれに 1,2,3 のタグを割り当てます。viewsearch は、2 つのボタンの間に追加する新しいビューです

//in .m

//in view did load method set following 
btnpreviouslySelected=nil;
customerButtonFrame=btnCustomer.frame;
inventoryButtonFrame=btnInventory.frame;
templatesButtonFrame=btnTemplates.frame;


-(void) RepositioningFrameMneuTree
{
    btnCustomer.frame=customerButtonFrame;
    btnInventory.frame=inventoryButtonFrame;    
    btnTemplates.frame=templatesButtonFrame;    
}

-(void) RepositioningMenuTree:(int)iCaseValue
{
    if (iCaseValue==1) 
    {
        btnInventory.center=CGPointMake(btnInventory.center.x,btnInventory.center.y+300);

    }

    if (iCaseValue==2 || iCaseValue==1) 
    {
        btnTemplates.center=CGPointMake(btnTemplates.center.x,btnTemplates.center.y+300);

    }
}


-(IBAction) buttonClicked:(UIButton*)btn;
{       

        if(btnpreviouslySelected==btn)
        {

            //set to default location
            [UIView beginAnimations:nil context:NULL];
            [UIView setAnimationDuration:0.5];
            //here remove search view
            [viwSearchView removeFromSuperview];

            [self RepositioningFrameMneuTree];           
            [UIView commitAnimations];
            return;
        }

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.5];      


        //assign previousbutton to new button
        btnpreviouslySelected=btn;
            [self RepositioningFrameMneuTree]; 



            viwSearchView.frame=CGRectMake(0,btn.frame.origin.y+45,viwSearchView.frame.size.width,viwSearchView.frame.size.height);


            //add search view on your view
            [self.buttonsview addSubview:viwSearchView];


        //-------------------------------------------
        //change the location of button below selected button to show the search button
        switch (btn.tag) {

            case 1:

                [self RepositioningMenuTree:1];
                break;
            case 2:

                [self RepositioningMenuTree:2];
                break;
            case 3:
                //dont do any thing
                break;

            default:
                break;
        }
        //end animation
        [UIView commitAnimations];




}
于 2012-11-19T05:19:59.293 に答える