【问题标题】:Move Back Button to the right UINavigationController将后退按钮移到右侧 UINavigationController
【发布时间】:2014-09-17 14:16:06
【问题描述】:

我需要将股票后退按钮向右移动几个像素,因为它向左移动太远,以至于当 iPad 在某些情况下您根本看不到该按钮。

我尝试过的:

[self.navigationController.navigationItem.backBarButtonItem setImageInsets:UIEdgeInsetsMake(0, 20, 0, 0)];
[self.navigationItem.backBarButtonItem setImageInsets:UIEdgeInsetsMake(0, 20, 0, 0)];
[self.navigationController.navigationBar.backItem.backBarButtonItem setImageInsets:UIEdgeInsetsMake(0, 20, 0, 0)];

这可能吗?

【问题讨论】:

  • 上面的“self”是什么?视图控制器?后退按钮由堆栈上的前一个 VC 提供,因此您可以在推送下一个 VC 的任何视图控制器上尝试它。
  • Self 是应用程序中所有其他 VC 继承的基本视图控制器。

标签: objective-c uinavigationcontroller uinavigationbar uibarbuttonitem


【解决方案1】:

由于某种原因,该解决方案无法在最新版本的 iOS (11+) 中运行。我为移动后退按钮图像所做的是扩展:

extension UIImage {
  func withInsets(_ insets: UIEdgeInsets) -> UIImage? {
    UIGraphicsBeginImageContextWithOptions(
      CGSize(width: size.width + insets.left + insets.right,
             height: size.height + insets.top + insets.bottom),
      false,
      self.scale)
    let origin = CGPoint(x: insets.left, y: insets.top)
    self.draw(at: origin)
    let imageWithInsets = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return imageWithInsets
  }
}

然后,您可以像这样调用您的实现:

UINavigationBar.appearance().backIndicatorImage = UIImage(named: "icon-back")?.withInsets(UIEdgeInsets(top: 0, left: 10.0, bottom: 0, right: 0 ))

【讨论】:

    猜你喜欢
    • 2021-05-06
    • 2020-03-01
    • 1970-01-01
    • 2021-07-12
    • 2022-11-04
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多