2017-10-09 97 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