UIBarButtonItem形状不正确

时间:2019-03-03 00:09:04

标签: swift uibutton uinavigationbar uibarbuttonitem

我想在导航栏的右上角创建一个收藏夹按钮。我想使用星形图标,因此创建了一个UIButton并将其嵌入UIBarButtonItem中。但是,即使我手动设置了条形按钮的尺寸,它也是超宽的。

另一个问题是我在这里使用的图片实际上是苹果公司iOS编程教程介绍中的白星。但是,它在屏幕上显示为蓝星。我不知道为什么。

let button = UIButton(type: .system)
button.frame = CGRect(x: 0, y: 0, width: 34, height: 34)
button.setImage(UIImage(named: "filledStar"), for: .normal)
button.addTarget(self, action: #selector(bookmarkCourse(_:)), for: .touchUpInside)

let barButtonItem = UIBarButtonItem(customView: button)
navigationItem.rightBarButtonItem = barButtonItem

enter image description here

2 个答案:

答案 0 :(得分:1)

首先将UIButton配置为自定义按钮:

let button = UIButton(type: .custom)

第二,您的图片资源很可能过大。我这样做的方法是按照Apple的指导上传重新缩放的图像。然后,您也可以删除设置框架尺寸的代码行。

  

导航栏和工具栏图标大小将以下大小用于   准备自定义导航栏和工具栏图标时的指导,但是   调整以创造平衡。

     

目标尺寸72px×72px(24pt×24pt @ 3x)48px×48px(24pt×24pt   @ 2x)最大尺寸84px×84px(28pt×28pt @ 3x)56px×56px(28pt×   28pt @ 2x)

     

https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/custom-icons/

答案 1 :(得分:0)

您可能不希望在自定义视图中使用UIBarButtonItem。创建条形按钮时只需传递实际图像:

let image = UIImage(named: "filledStar")
UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(bookmarkCourse(_:))

关于颜色,这是因为您的条形按钮项目的色调是颜色。默认值为您看到的蓝色。另外,请注意按照@rbaldwin的评论适当地扩展资产。