2017-09-25 60 views
2

我剛剛將XCode更新爲版本9,並且在沒有重大更改的情況下運行我的項目時,標題徽標已增大其大小以填充標題。在升級之前,它的大小按照我的意願覆蓋了導航欄的大約50%。標題徽標在Swift 4/XCode 9/iOS 11上的大小錯誤

,我定位標識的代碼如下:

//Logo on NavBar 
     let logo = UIImage(named: "logo.png") 
     let imageView = UIImageView(image:logo) 
     imageView.height = (self.navigationController?.navigationBar.height)! - 25 
     imageView.contentMode = .scaleAspectFit 
     self.navigationItem.titleView = imageView 

以下是如何使用的標誌(和它應該)外觀:

enter image description here

而且Xcode的更新後,這是它的外觀:

enter image description here

爲什麼會發生這種情況的任何想法?

+1

這可能有助於https://stackoverflow.com/a/46275449/285190 – Flexicoder

+0

你能設置'imageView.height'嗎?它沒有給出任何錯誤? –

+0

沒有錯誤..它編譯並運行 –

回答

1

爲了在iOS 11中做到相同,在titleView中添加一個子視圖並根據需要調整其大小。

let imagen = UIImageView(frame: CGRect(x: -view.view.frame.width/3, y: -(view.navigationController?.navigationBar.frame.height)!/2, width: view.view.frame.width/1.5 , height: (view.navigationController?.navigationBar.frame.height)!)) 
imagen.image = #imageLiteral(resourceName: "logo") 
view.navigationItem.titleView = UIView() 
view.navigationItem.titleView?.addSubview(imagen) 
+0

你可以請編輯你的答案,使x和y爲0,然後等於它的中心titleview?這樣的尺寸可以是我選擇的任何尺寸。 –

+0

與該代碼我得到UIImageView居中。將變量更改爲您的案例。 – Raffista

+0

我也是......但是當我縮小尺寸時就不再這樣了。以一個額外的電話爲中心是一種確保它正確顯示的方式,無論人們選擇的尺寸如何。此外,它應該是scaleToFit,使徽標是正確的比例,無論其縱橫比。 –

2

我有同樣的問題 - 只是出現在iOS的11 所以我給自己定的高度和爲ImageView的編程寬度約束。

imageView.widthAnchor.constraint(equalToConstant: YOUR_WIDTH).isActive = true 
imageView.heightAnchor.constraint(equalToConstant: YOUR_HEIGHT).isActive = true 
+0

這個工程,真棒,你是一個半神人。 – dan

+0

這很好用,無需添加子視圖或使用故事板!謝謝 – mintwhip