как израсходовать ширину UIButton только справа налево - PullRequest
0 голосов
/ 01 декабря 2011

Мне хотелось бы узнать, как увеличить ширину UIButton только влево, почти как кнопка магазина приложений, которая будет расходиться влево.однако у меня есть несколько кнопок для расходования.

РЕДАКТИРОВАТЬ это рабочий код:

//viewdidload
buttonCaption = [UIButton buttonWithType:UIButtonTypeCustom];
//default placement
buttonCaption.frame = CGRectMake(245, 385, 70, 30); //default width size
[self nextAnimation:buttonCaption.frame.size.width]; 

передать значение по умолчанию для анимации

-(void)nextAnimation:(float)previousWidth {

//button setting
buttonCaption.titleLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin ;
//buttonCaption.titleLabel.font =[UIFont systemFontOfSize:20];
[[buttonCaption layer] setCornerRadius:5.0f];
[[buttonCaption layer] setMasksToBounds:YES];
[[buttonCaption layer] setBackgroundColor:[[UIColor colorWithRed:0 green:0 blue:0 alpha:0.7] CGColor]];   
[buttonCaption.titleLabel setFrame:CGRectMake(0,0, 25, 25)];   
CGSize stringsize = [tempCaption sizeWithFont:[UIFont systemFontOfSize:20]];  
CGFloat diff = stringsize.width - previousWidth;
NSLog(@"diff %f",diff);



 [UIView animateWithDuration:0.5

                  animations:^{ 
                    [buttonCaption setFrame:CGRectMake(buttonCaption.frame.origin.x-diff, 
                                                       buttonCaption.frame.origin.y, 
                                                       buttonCaption.frame.size.width + diff, 
                                                       buttonCaption.frame.size.height)];                


                  } 
                  completion:^(BOOL  completed)
                {
[self nextAnimation:stringsize.width];
                }
  ]; 
}   

Ответы [ 3 ]

1 голос
/ 01 декабря 2011

Вам нужна разница между вашей старой шириной и новой шириной - назовите это widthChange.Затем вычислите ваш новый кадр следующим образом:

CGRect newFrame = buttonCaption.frame;
newFrame.origin.x -=  widthChange;
newFrame.size.width += widthChange;

Теперь это единственное, что вы анимируете:

buttonCaption.frame = newFrame; 

По сути, вам нужно одновременно переместить начало координат влевоВы расширяете ширину.

1 голос
/ 01 декабря 2011

Попробуйте этот блок анимации кода

[UIView animateWithDuration:0.5f 
                 animations:^{ 
                     float kOfset = 0.25f;
                     CGFloat newSizeX = buttonCaption.frame.size.width*(1+kOfset);
                     CGFloat ofsetX = buttonCaption.frame.size.width*kOfset;
                     [buttonCaption setFrame:CGRectMake(buttonCaption.frame.origin.x-ofsetX, buttonCaption.frame.origin.y, newSizeX, buttonCaption.frame.size.height)];                
                 }
                 completion:^(BOOL finished){  }];

Измените kOfset на значение, которое вы хотите (это размер в%).

0 голосов
/ 01 декабря 2011
[buttonCaption setFrame:CGRectMake(110-2,385,stringsize.width +5, stringsize.height)];
...