触摸UITextField时如何制作“取消”按钮的动画

时间:2012-07-17 06:15:27

标签: ios animation uitextfield


我现在正在创建一个具有Safari浏览器的应用程序:
UITextField(左侧)和UISearchBar(右侧)插入到视图顶部的UINavigationBar中。
我想知道当用户触摸UITextField时,是否有一种方法可以在“取消”按钮上添加动画。
动画就像在Safari上一样:当用户触摸UITextField时,当UISearchBar褪色时,“取消”按钮来自窗口外部。 请注意,我正在通过UIBarbuttonItem(UIBarButtonSystemItemCancel)初始化“取消”按钮。
任何帮助将不胜感激。

更新: 最后我自己找到了anwser。您似乎无法指定UIBarButtonItem显示或隐藏的特定位置。因此,解决此问题的一种可能方法是自定义UIButton,看起来就像UIBarButtonItem,这里是代码:

-(void)viewDidLoad {
    ......
    CGSize backgroundStretchPoints = {4, 2};
    UIImage *image = [[UIImage imageNamed:@"UINavigationBarDefaultButton.png"] stretchableImageWithLeftCapWidth:backgroundStretchPoints.width
                                                                                               topCapHeight:backgroundStretchPoints.height];
    button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(330, 23, 80, 30); // initialize the button outside the window
    [button setBackgroundImage:image forState:UIControlStateNormal];
    [button setTitle:@"Cancel" forState:UIControlStateNormal];
    button.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:12];
    [button addTarget:self action:@selector(cancelButtonPressed) forControlEvents:UIControlEventTouchUpInside];
    [navigationBar addSubview: button];
    .......
}

当你点击UITextField(即)时,取消按钮将滑入窗口:

-(void)textFieldDidBeginEditing:(UITextField *)textField {
    [UIView animateWithDuration:0.25 animations:^{
        button.frame = CGRectMake(232, 23, 80, 30);  // here is the position button will slide into window with animation
    }];

}

0 个答案:

没有答案