2017-08-25 55 views
1

我在我的應用程序中創建了一個「更多」按鈕,並且在我們關注按鈕時創建了一個很酷的動畫。它在iPhone 6上運行得非常好,但不是在6S plus或5s上運行。Button.center不適用於Swift中的所有屏幕3/4

這是我的按鈕和我的約束:

enter image description here

我創建我動畫一個backgroundView當我焦點的按鈕:

func createBackgroundEffet(_ backgroundView: UIView, size: Int, buttonFocused: UIButton){ 
     backgroundView.frame = CGRect(x: 0, y: 0, width: size, height: size) 
     backgroundView.backgroundColor = UIColor(red: 200/255, green: 200/255, blue: 200/255, alpha: 1) 
     backgroundView.layer.cornerRadius = backgroundView.frame.size.width/2 
     backgroundView.clipsToBounds = true 
     backgroundView.center = buttonFocused.center 
     backgroundView.alpha = 1 
     self.insertSubview(backgroundView, at: 2) 
} 

(I設置backgroundView.alpha = 1例如)

而這個結果取決於屏幕(在iPhone 6上,它完全在「更多」按鈕上)。

enter image description here

我覺得buttonFocused.center值是從iPhone 6

值我能做些什麼來解決這個問題?

+0

在哪裏你稱這個'createBackgroundEffet'? – Tj3n

+0

在視圖的didLoad()或awakeFromNib()視圖 – KevinB

+1

嘗試調用它從'viewWillAppear'或'viewDidLayoutSubview',在'viewDidLoad'視圖尚未佈局,導致錯誤的行爲 – Tj3n

回答

0

你肯定有一些問題與你的約束。

首先是去除所有限制,這限制 enter image description here

比分配這樣 頂級傢伙約束: enter image description here

和更多的按鈕:

enter image description here

+0

感謝您的答案,但我不能這樣做。圖片的高度和寬度不固定。它根據屏幕設置:/ – KevinB

+0

您是否嘗試將它們放入堆棧視圖並使用大小類?我認爲它應該可以幫助你。 – swift2geek