2


私は現在、Safari のようなブラウザーを備えたアプリを作成して
います。ビューの上部にある UINavigationBar に UITextField (左側) と UISearchBar (右側) が挿入されています。
ユーザーがUITextFieldに触れたときに表示される「キャンセル」ボタンにアニメーションを追加する方法があるかどうか疑問に思っています。
アニメーションは Safari と同じです。ユーザーが UITextField に触れると、UISearchBar がフェードしている間にウィンドウのすぐ外側から [キャンセル] ボタンが表示されます。
UIBarbuttonItem(UIBarButtonSystemItemCancel) によって「キャンセル」ボタンを初期化していることに注意してください。
どんな助けでも大歓迎です。

更新: 最後に、自分で anwser を見つけました。UIBarButtonItem が表示または非表示になる特定の位置を割り当てることはできないようです。したがって、この問題を解決する 1 つの可能な方法は、UIBarButtonItem のように見える UIButton をカスタマイズすることです。コードは次のとおりです。

-(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(ie) をクリックすると、キャンセル ボタンがウィンドウにスライドします。

-(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
    }];

}

4

0 に答える 0