我现在正在创建一个具有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
}];
}