[英]UIBarButtonItem Offset?
我试图在我的应用程序中偏移UIBarButtonItems,我需要它们稍微偏移,因为我用于导航栏的图像所以它们都正确排列。 我设法做到这样:
[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackgroundVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonBackgroundVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];
我有两个疑问。
这会停止按钮具有任何突出显示的状态,它们可以正常工作,但不会明显地按下按钮。 无论如何围绕这个?
更重要的是,这可以很好地在我的导航栏中向上推动我的按钮,但是它会将它们推到我的工具栏以及屏幕底部我需要相反的位置,实际上将它们向下推了一下。 我怎么处理这个?
任何帮助总是赞赏,谢谢。
事实证明我找到了解决方案! 您可以使用以下内容根据对象的视图调整这些外观属性:
appearanceWhenContainedIn:
而不是标准
appearance
所以我已经实现了我的需求,根据按钮是否在导航栏或工具栏中上下调整:
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackButtonBackgroundVerticalPositionAdjustment:-3 forBarMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil] setBackgroundVerticalPositionAdjustment:3 forBarMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil] setBackButtonBackgroundVerticalPositionAdjustment:3 forBarMetrics:UIBarMetricsDefault];
标签栏项目框架可以直接操作:
// get the handle of your tabBar (probably self.tabBarController.tabBar
for (UIView *item in tabBar.items) {
item.frame = CGRectOffset(item.frame, 0.0, -3.0);
}
一种较少侵入性的水平位置调整方法是利用条形按钮项固定和灵活的空间:
// this will put three pixels between whatever items it sits between
UIBarButtonItem *fixed = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]
fixed.width = 3.0;
将它们放入您的items数组中。 所以,如果你想用3px分隔两个项目,请执行以下操作:
tabBar.items = [NSArray arrayWithObjects:button1, fixed, button2, nil];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.