Swift中垂直居中的后指示符号图像

Swift中垂直居中的后指示符号图像,swift,uinavigationbar,Swift,Uinavigationbar,我已使用以下代码将自定义图像放入backIndicatorImage: var backButton = UIImage(named: "locationbar_back")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) self.navigationController!.navigationBar.backIndicatorImage = backButton self.navigationController!.n

我已使用以下代码将自定义图像放入
backIndicatorImage

var backButton = UIImage(named: "locationbar_back")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
self.navigationController!.navigationBar.backIndicatorImage = backButton
self.navigationController!.navigationBar.backIndicatorTransitionMaskImage = backButton
该图像略高于标准图形,因此我希望能够将其垂直居中

我已尝试使用此代码在导航栏中查找图像(不是很优雅)(欢迎提供更好的建议):

令人沮丧的是,图像瞬间出现在正确的位置,然后又回到原来的位置

我试着打电话给他:

  • viewDidLoad
  • ViewWillLayoutSubView
  • viewDidLayoutSubviews
  • 视图显示
毫无乐趣


有人有什么建议吗?

您可以通过下一个代码直接更改UIImage的位置。 您可以手动设置原点:

...
var backButtonImage = UIImage(named: "backButtonImage")!
backButtonImage = changeImagePosition(backButtonImage, origin: CGPointMake(0, 0))

navigationController!.navigationBar.backIndicatorImage = backButtonImage
navigationController!.navigationBar.backIndicatorTransitionMaskImage = backButtonImage
...
func changeImagePosition(image: UIImage, origin: CGPoint) -> UIImage {
    let size = image.size

    UIGraphicsBeginImageContextWithOptions(size, false, 2)
    image.drawInRect(CGRectMake(origin.x, origin.y, size.width, size.height))

    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return newImage
}

你通常通过标签来识别UIView。这确实移动了它,但我需要向上移动我的图像。如果我调用CGPointMake(0,-2),那么它将裁剪图像。有什么建议吗?感谢背面指示器的有限绘图区域。至少,您可以缩放图像并按标准边界排列。
...
var backButtonImage = UIImage(named: "backButtonImage")!
backButtonImage = changeImagePosition(backButtonImage, origin: CGPointMake(0, 0))

navigationController!.navigationBar.backIndicatorImage = backButtonImage
navigationController!.navigationBar.backIndicatorTransitionMaskImage = backButtonImage
...
func changeImagePosition(image: UIImage, origin: CGPoint) -> UIImage {
    let size = image.size

    UIGraphicsBeginImageContextWithOptions(size, false, 2)
    image.drawInRect(CGRectMake(origin.x, origin.y, size.width, size.height))

    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return newImage
}