2017-08-25 4 views
1

Ich habe eine "mehr" Schaltfläche in meiner App erstellt, und eine coole Animation, wenn wir den Knopf fokussieren. Es funktioniert sehr gut auf iPhone 6, aber nicht auf 6S plus oder 5s zum Beispiel.Button.center funktioniert nicht auf allen Bildschirmen in Swift 3/4

Dies ist meine Schaltfläche und meine Einschränkungen:

enter image description here

ich eine backgroundView, die ich animieren, wenn ich die Schaltfläche den Fokus:

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 gesetzt backgroundView.alpha = 1 für das Beispiel)

Und dies die Ergebnisse je nach Bildschirm (auf iPhone 6 ist es perfekt auf der Schaltfläche "mehr").

enter image description here

Ich denke, der buttonFocused.center Wert der Wert aus dem iPhone ist 6.

Was kann ich tun, um dieses Problem zu beheben?

+0

wo tun Du nennst das 'createBackgroundEffet'? – Tj3n

+0

In der Ansicht didLoad() oder watchFromNib() der Ansicht – KevinB

+1

Versuchen Sie es von 'viewWillAppear' oder' viewDidLayoutSubview' aufrufen, in 'viewDidLoad' die Ansicht wurde noch nicht Layout, Ergebnis in falsches Verhalten – Tj3n

Antwort

0

Sie haben definitiv einige Probleme mit Ihren Einschränkungen.

allererst entfernen Sie alle Beschränkungen und diese Einschränkung enter image description here

als ähnliche für Top-Typ Einschränkungen zuweisen: enter image description here

und für mehr Taste:

enter image description here

+0

Danke für Ihre Antwort, aber ich kann das nicht tun. Die Höhe und Breite des Bildes ist nicht festgelegt. Es ist auf dem Bildschirm eingestellt:/ – KevinB

+0

haben Sie versucht, sie stackviews und Größenklassen verwenden? Ich denke, es sollte dir helfen. – swift2geek

Verwandte Themen