2017-02-24 5 views
2

Ich poste unten einen Teil meines Codes auf einer App, die ich zum Spaß, das Konzept, es ist anders, aber das Design der Kamera Sitzung ist sehr ähnlich mit der Instagram App. Ich benutze auch den PageMenu Kakao, der über Code sehr gut und einfach zu implementieren ist.Wie man automatische Größenanpassung Tasten über Swift 3, die zwischen verschiedenen Iphones arbeiten

override func viewDidLoad() { 
    super.viewDidLoad() 

    pageMenu?.delegate = self 
    photoControllerBG.frame = CGRect(x: 0, y : self.view.frame.minY, width: self.view.frame.width, height: self.view.frame.height) 

    let cameraButton = UIButton(frame: CGRect(x: self.view.frame.midX - , y: photoControllerBG.frame.minY + (self.view.frame.maxY/20*1), width: 130, height: 130)) 
    cameraButton.addTarget(self, action: #selector(cameraButtonPressed(button:)), for: .touchUpInside) 
    cameraButton.setImage(#imageLiteral(resourceName: "Camera Button.png"), for: UIControlState.normal) 
    self.view.addSubview(cameraButton) 
} 

Im Moment wird die Schaltfläche auf einem iPhone 7 Plus-Display, wie ich es in dem Viewcontroller und mit dem Bild der Kamera-Taste mit der gleichen Breite und Höhe zentrierte will, so dass es einen perfekten Kreis bleiben . Das Problem tritt auf, wenn ich den Simulator mit einem iPhone SE oder iPhone 6 umstelle, wo der Button zu groß und nicht zentriert wird. Können Sie mir helfen, eine mathematische Formel zu finden, mit der dieses große aber kleine Problem gelöst werden kann?

+0

Zuerst denke ich, es wäre besser für Sie automatisches Layout verwenden .. sowieso, was Sie erreichen wollen? Haben Sie den Button am unteren Bildschirmrand zentriert? –

+0

Versucht, es zu verwenden, aber die Tasten und die Ansicht werden nicht bleiben, wo ich will. –

Antwort

0
let label = UILabel() 
    label.text = "title" 
    label.translatesAutoresizingMaskIntoConstraints = false 
    view.addSubview(label) 

    let button = UIButton(type: .system) 
    button.translatesAutoresizingMaskIntoConstraints = false 
    button.setImage(#imageLiteral(resourceName: "image"), for: .normal) 
    view.addSubview(button) 

    NSLayoutConstraint.activate([ 
     label.centerXAnchor.constraint(equalTo: view.centerXAnchor), 
     label.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor, constant: 16) 
    ]) 

    NSLayoutConstraint.activate([ 
     button.centerXAnchor.constraint(equalTo: view.centerXAnchor), 
     button.topAnchor.constraint(equalTo: label.bottomAnchor), 
     button.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.3), //change your multiplier 
     button.heightAnchor.constraint(equalTo: button.widthAnchor) 
     ]) 
+0

Ich werde dieses jetzt versuchen, lassen Sie mich sehen –

+0

Implementiert es, aber die Schaltfläche muss ein wenig weg von der Spitze des View-Controller bleiben. Wenn Sie den Code verwenden, wird das Bild der Schaltfläche halbiert, wenn ich das Y auf topAnchor setze. Was kann ich tun? –

+0

@MattiaGerardi entfernen Sie 'button.centerYAnchor ...' diese Zeile, fügen Sie 'button.topAnchor.constraint hinzu (equalTo: topLayoutGuide.bottomAnchor)' –

2

Ihre Frage bezieht sich auf Folgendes in Code (swift). Wenn Sie die Schaltfläche nicht in swift erstellen, würde ich das überhaupt nicht tun. Also, wenn Sie eine Schaltfläche in einem Storyboard erstellt haben, können Sie es wie folgt skalieren: -

Ich würde eine proportionale Breite Einschränkung kombiniert mit einem Seitenverhältnis Einschränkung in der Story-Board, um dies zu erreichen.

Es mag nicht sofort klar sein, wie man das macht, also befestige ich eine Bilderreise.

  1. Fügen Sie Ihre Schaltfläche zum View-Controller hinzu. Das Bild zeigt die endgültigen Einschränkungen.

enter image description here

  1. eine gleiche Breite Einschränkung zwischen der Schaltfläche Hinzufügen und es ist Super

enter image description here

  1. Der Button hat nicht die gleiche Breite wie seine Superansicht! Mein Button ist 100 px breit und der Superview ist 375 px breit. Also berechnen wir dieses Verhältnis, um uns zu helfen, die proportionale Breite zu berechnen.

enter image description here

  1. bearbeiten die gleiche Breite Beschränkung durch die proportionale Breite oben als Multiplikator verwendet wird.

enter image description here

  1. Fügen Sie ein Seitenverhältnis auf die Schaltfläche

enter image description here

  1. In jedem verbleibende Beschränkungen (In meinem Fall zentrierte ich den Knopf horizontal und vertikal)

  2. Ihre Einschränkungen für die Schaltfläche sollen wie folgt aussehen:

enter image description here

+0

Danke für Ihre wirklich vollständige Antwort, ich werde versuchen, dies jetzt zu implementieren. Ich werde berichten ob es funktioniert wie ich es brauche oder ich brauche etwas anderes (ich hoffe nicht) –

Verwandte Themen