1

私は iOS 7 を使用しており、ナビゲーション コントローラーの 1 つで、何らかの理由でカスタムの戻るボタン (戻る矢印の画像とその横にテキストがある) を leftBarButtonItem として使用する必要がありました。iOS 7 では、アクション シートまたはアラートが画面に表示されると、左右のバー項目ボタンがフェードアウトします。しかし、カスタム ボタンではテキストのみがフェードアウトし、戻る矢印ボタンでは特別な処理を行う必要があります。これを行う直接的な方法はありますか:

これが私のコードです:

カスタムボタンの追加(PS:何らかの理由でカスタムボタンを使用する必要があります):

- (void)showCustomBackButton {
    UIButton *aCustomBackButton = [UIButton buttonWithType:101];
    [aCustomBackButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
    [aCustomBackButton setTitle:@"Back" forState:UIControlStateNormal];


    UIImage *backArrow = [UIImage imageNamed:@"backArrowImage"];
    UIImageView *imageView = [[UIImageView alloc]initWithImage:@"backArrow"];
    [imageView setFrame:CGRectMake(kScreenOrigin, topMargin, backArrow.size.width, backArrow.size.height)];
    [aCustomBackButton addSubview:imageView];
    UIBarButtonItem *aNegativeSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    aNegativeSpacer.width = -8.0;
    UIBarButtonItem *aLeftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:aCustomBackButton];
    aLeftBarButtonItem.tag = 100;
    self.navigationItem.leftBarButtonItems = @[aNegativeSpacer, aLeftBarButtonItem];
}

- (void)showCustomBackButtonFaded {
    UIBarButtonItem *aBarButtonItem = [self.navigationItem.leftBarButtonItems lastObject];

    if (aBarButtonItem && aBarButtonItem.tag == 100) {
        UIButton *aCustomBackButton = [UIButton buttonWithType:101];
        [aCustomBackButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
        [aCustomBackButton setTitle:@"Back" forState:UIControlStateNormal];

        UIImage *backArrow = [UIImage imageNamed:@"fadedBackArrow"];
        UIImageView *imageView = [[UIImageView alloc]initWithImage:backArrow];
        [imageView setFrame:CGRectMake(kScreenOrigin, topMargin, backArrow.size.width, backArrow.size.height)];
        [aCustomBackButton addSubview:imageView];
        UIBarButtonItem *aNegativeSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
        aNegativeSpacer.width = -8;
        UIBarButtonItem *aLeftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:aCustomBackButton];
        self.navigationItem.leftBarButtonItems = @[aNegativeSpacer, aLeftBarButtonItem];
    }
}
4

0 に答える 0