2016-04-15 144 views
1

我将自定义后退按钮图像放到UINavigationbar导航栏后退按钮自定义图像y偏移

func setBackButton() 
{ 
    let backImg: UIImage = UIImage(named: "BackButton")! 
    UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffset(horizontal: 0, vertical: -60), forBarMetrics: .Default) 

    UINavigationBar.appearance().tintColor = UIColor.goldenColor() 
    UINavigationBar.appearance().backIndicatorImage = backImg 
    UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImg 
} 

自定义图像设置正确,但对齐不合适。后退按钮的y轴向y轴方向移动。如何将其对齐到导航栏的中间。

back button image dimensions是34 * 9(1×),68 * 18(2×),135 * 36(3×)

enter image description here

+0

通常酒吧按钮将在中间对齐只我认为图像的高度更高,所以它是这样显示。你可以在这里提供图像的尺寸 –

+0

我的后退按钮图像尺寸是34 * 9(1x),68 * 18(2x),135 * 36(3x) – pkc456

+0

然后尝试设置背景条按钮的背景颜色,然后你可以找到确切的问题 –

回答

0

请尽量设置返回按钮像如下,

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) 
    [button setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 0)]; 
else 
    [button setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 

UIImage *btnImage = [UIImage imageNamed:@"back.png"]; 
[button setImage:btnImage forState:UIControlStateNormal]; 
[button setImage:btnImage forState:UIControlStateHighlighted]; 
button.frame = CGRectMake(0, 0, 30, 45); 
button.backgroundColor = [UIColor redColor]; 
[button addTarget:self action:@selector(backBtnAction) forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:button]; 
self.navigationItem.leftBarButtonItem = backButton; 
+0

我必须把所有的视图控制器上面的代码。我想要整个应用程序中的自定义后退按钮。这就是为什么我使用UINavigationBar.appearance()。任何替代品? – pkc456

+0

您可以为UIBarButton项目创建类别,然后在其中实现代码并从所有视图控制器中调用该方法,以便获得所需的输出。或者简单的NSObject文件将代码放在那里,并从所有viewController调用它,这也会给出相同的输出。 –

+0

上述代码是否正常工作?如果是,请将其标记为正确答案。 –