如何以编程方式插入右键图像UINavigationbar swift 3
Posted
技术标签:
【中文标题】如何以编程方式插入右键图像UINavigationbar swift 3【英文标题】:how to inserted right button image programmatically UINavigation bar swift3 【发布时间】:2018-01-18 07:54:33 【问题描述】:我正在尝试使用静态图像以编程方式覆盖导航项的 rightButton
这样的按钮:
我已经尝试了很多时间来解决它,但没有得到正确的答案。
谁能帮我做到这一点?
【问题讨论】:
如果你将一个视图控制器从一个推到另一个。该左栏按钮图像显示为默认值。您需要以编程方式设置左栏按钮并为栏按钮设置图像以解决此问题。 @NitinGohel left != right ;) 请显示您尝试过的代码。 如图所示,他在询问左栏按钮。如果该图像设置来自情节提要,那么他可以轻松设置和替换为 xib 或情节提要。 我已经以编程方式创建了右栏按钮并为栏按钮设置了图像,但图像对齐和 x 和 y 设置不正确 - nitin Gohel 【参考方案1】:可能的解决方案。您可以创建 UIBarButton 项目的扩展。 示例:
import UIKit
extension UIBarButtonItem
convenience init (image: UIImage?, target: Any?, action: Selector?)
let button = UIButton(type: .custom)
button.imageView?.contentMode = .scaleAspectFit
button.frame = CGRect(x: 0.0, y: 0.0, width: 44.0, height: 44.0)
button.addTarget(target, action: action!, for: .touchUpInside)
button.setImage(image, for: UIControlState.normal)
button.imageEdgeInsets = UIEdgeInsets(top: 7.0, left: 7.0, bottom: 7.0, right: 7.0)
if #available(ios 9.0, *)
button.widthAnchor.constraint(equalToConstant: 44.0).isActive = true
button.heightAnchor.constraint(equalToConstant: 44.0).isActive = true
self.init(customView: button)
然后在你的 viewDidLoad
方法中使用它:
let rightButton = UIBarButtonItem(image: UIImage(named: "example"), target: self, action: #selector(exampleAction(sender:)))
self.navigationItem.rightBarButtonItem = rightButton
【讨论】:
每当我在上面使用你的代码但不起作用时,我都会创建 UIBar RightButton insite viewWillApear 方法 您应该只在 viewDidLoad 中执行一次。问题是什么?按钮不可见? 您确定该图像的名称正确吗?你能展示你的代码吗? 告诉我一件事我可以用什么替换 #selector(exampleAction(sender:))) ?? 是的,当然,你应该把这个按钮的操作方法放在那里。【参考方案2】:可以使用现有的UIBarButtonItem
方便init
方法:
convenience init(image: UIImage?, style: UIBarButtonItemStyle, target: Any?, action: Selector?)
style
= .plain(无边框)。
见https://developer.apple.com/documentation/uikit/uibarbuttonitem/1617163-init
然后,当你的 UIViewController 位于导航堆栈的顶部时,通知你的 UINavigationController 显示你的按钮,设置你的视图控制器的 navigationItem.rightBarButtonItems
属性:
(myViewController.navigationItem.rightBarButtonItems = [<your items>]
【讨论】:
以上是关于如何以编程方式插入右键图像UINavigationbar swift 3的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式在 uicollectionview 中插入图像?
如何设置 UINavigation 大小以适合背景图像大小?