ios - iOS 13导航栏外观setBackIndicatorImage不起作用

标签 ios uinavigationbar ios13

我正在尝试使用新的iOS导航栏外观API配置我的应用程序的后退按钮指示器,但是它不起作用:

    let bar = self.navigationController!.navigationBar
    let sz = CGSize(20,20)
    let arrow = UIImage(systemName:"arrowtriangle.left")!
    let indic =
        UIGraphicsImageRenderer(size:sz).image { ctx in
            arrow.draw(in:CGRect(0,0,20,20)) // indicator is arrow
    }
    let indicmask =
        UIGraphicsImageRenderer(size:sz).image { ctx in
            ctx.fill(CGRect(0,0,20,20)) // mask is entire image
        }
    bar.standardAppearance.setBackIndicatorImage(
        indic, transitionMaskImage: indicmask)

我所看到的只是一个大的蓝色矩形。

enter image description here

这是怎么回事?

最佳答案

这是一个非常愚蠢的错误:Apple的参数向后!只需将图像交换到应放置蒙版的位置,然后将蒙版移至应放置图像的位置,一切都会很好:

    let bar = self.navigationController!.navigationBar
    let sz = CGSize(20,20)
    let arrow = UIImage(systemName:"arrowtriangle.left")!
    let indic =
        UIGraphicsImageRenderer(size:sz).image { ctx in
            arrow.draw(in:CGRect(0,0,20,20)) // indicator is arrow
    }
    let indicmask =
        UIGraphicsImageRenderer(size:sz).image { ctx in
            ctx.fill(CGRect(0,0,20,20)) // mask is entire image
        }
    bar.standardAppearance.setBackIndicatorImage(
        indicmask, transitionMaskImage: indic) // swap!

enter image description here

关于ios - iOS 13导航栏外观setBackIndicatorImage不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58171228/

相关文章:

ios - addChildViewController 不适合 UIViewController

ios - 将目标添加到导航栏中的库存后退按钮

Webview 中的 iOS 13 iPad 用户代理问题

swift - iOS 13.1 UITextView 委托(delegate)方法 shouldInteract 在附件上滚动时调用

ios - 按下按钮后如何提示用户推送通知权限?

ios - 如何在表格 View 中滑动删除

ios - 更改导航栏标题字体 - 不同

ios - 导航栏中带有大标题或搜索栏的 UIRefreshControl 的故障动画

iOS 13 : UITextField with LeftView spacing issue - Xcode 11

javascript - 在 Safari 中使用 PHP 清除 Cookie 的行为很奇怪