2017-10-09 100 views
1

问题UIBarButton按钮图像拉伸宽度

升级到9的XCode和迁移我的代码斯威夫特4之后,我遇到的是我没想到的几个问题。其中之一是,我的应用程序中的导航栏包含一个按钮,在左上角的按钮项目插槽与图像,现在图像(和按钮)被拉伸到屏幕上的所有视图控制器的一半(一些有自动布局和一些别)。在XCode 9之前,它工作得非常好,而且这个问题只是在我更新XCode后才弹出来的。

我已经试过

this old SO post有人张贴最近的回答似乎表明来自不同尺寸的图像Assets.xcassets我的问题茎,但我不明白为什么这将是一个问题。我尝试复制按钮的图像,并在最后使用“@ 2x”对其进行重命名(不确定是否有什么区别),然后将它拖入Assets.xcassets中的2x插槽,并以某种方式使该按钮略微减少拉伸(大约三分之一的屏幕而不是大约一半)。总的来说,我只是困惑,为什么我有这个问题,并会感谢解决方案,可以解决我的问题解释为什么它的工作,但现在不。

在此先感谢。

回答

1

RPatel99嗨,

我面临着同样的问题。但是,我发现了一个解决方案,您的按钮的图像设置为这个尺寸:
- 图片@ 1X:22x22px
- 图片@ 2倍:44x44px
- 图片@ 3X:66x66px

不幸的是,我由于我的声誉而无法发布照片。

注:我尝试了很多不同的方式,例如更改我的按钮图像的框架,但它不起作用。如果有人有其他解决方案,告诉我,我很感兴趣。

+0

我的形象的1X不是22x22px,但我想它加倍为2倍大小和三倍的3倍,但只是拉伸图像更... – RPatel99

+0

改变所有这些的大小来作为小得多修复拉伸的图像,但左侧的barbutton仍然是由于某种原因比右侧更向右对齐......改变图像大小似乎也改变了按钮的大小(即使在按钮的大小确定了图像的大小之前应该缩放,反之亦然),但然后barbutton不按比例缩放按钮应该... – RPatel99

0

你必须设置这样栏按钮图像视图:

imageView是你栏按钮ImageView

let widthConstraint = imageView.widthAnchor.constraint(equalToConstant: 32) 
let heightConstraint = imageView.heightAnchor.constraint(equalToConstant: 32) 
heightConstraint.isActive = true 
widthConstraint.isActive = true 
+0

我想保留故事板中的所有内容......在过去的XCode版本中,我只是将一个Button拖入导航栏的左边barButtonItem并将Button的图像设置为我想要的图像,然后我可以将它调整到我想要的故事板中。那么有什么方法可以与故事板一起使用吗?因为按钮和barbuttonitem都是在故事板中创建的,我不想在不需要的地方创建更多'@ IBOutlet'。 – RPatel99