iOS 5后退按钮大小

jps*_*sim 2 uinavigationitem ios ios5 uiappearance

我使用的是iOS 5的UIAppearance协议使用自定义导航栏后退按钮,当看到这里.与我发现的其他方法不同,这个方法是最好的,因为它保留了默认的后退按钮动画和行为.

唯一的问题是我无法更改其大小或将其设置为不剪辑子视图.这是发生了什么:

剪切图像

A是预期的行为,B是默认样式,C是剪切结果.

不幸的是,它并不像将UIBarButtonItem设置为clipsToBounds = NO那么容易.

有谁知道如何解决这个问题?谢谢!

lxt*_*lxt 5

正如您所发现的,UIAppearance代理不会让您调整按钮本身的尺寸:UIBarButtonItem文档中给出了支持的外观方法列表,虽然它包含标题标签本身的指标,但按钮是禁止的.

对于它的价值,按钮本身实际上是44点(88像素,如果你在视网膜中)在可触摸区域方面高,它只是按钮图形小于那个.

如果你已经设定了相当于3磅高度的差异,那么最好的选择可能是创建自己的自定义按钮并使用该UINavigationItem setLeftBarButtonItem方法.正如您所指出的,您将需要实现附加到该按钮的简短方法,该方法实现popNavigationController以确保保持正确的行为.

更新:我刚刚发现,如果你保持你的后退按钮,你可以实际上动画它,使它以类似于标准后退按钮的方式滑动.在下面的代码中self.backButton,UIButton您将在您的initWithCustomView UIBarButtonItem方法中使用.

- (void)viewWillDisappear:(BOOL)animated {
    [UIView animateWithDuration:0.3 
                     animations:^{
                         self.backButton.frame = CGRectMake(self.backButton.frame.origin.x+100, 
                                                            self.backButton.frame.origin.y, 
                                                            self.backButton.frame.size.width, 
                                                            self.backButton.frame.size.height);
                     }];
}
Run Code Online (Sandbox Code Playgroud)

...这将在视图控制器消失时触发(即,弹出按下时),但是您可以挂钩UINavigationController代理以仅在弹出导航控制器时触发它.当按下控制器时,它似乎肯定会移动按钮,虽然我只在模拟器上测试过它.