2017-02-25 6 views
0

Ich habe versucht, ein Bild auf der linken Seite einer Schaltfläche auszurichten, während Sie auch etwas Text in der Mitte einer Schaltfläche platzieren. Ich habe diesen Stapelüberlaufpfosten verfolgt: Left-align image and center text on UIButton.ios - Links Ausrichten von Bild und Platzieren von Text in der Mitte von UIButton

Ich folgte einer der Antworten, die am besten für mich funktionierte. Hier ist der Code für diese Antwort:

@IBDesignable class LeftAlignedButton: UIButton { 
    override func layoutSubviews() { 
     super.layoutSubviews() 

     if let image = imageView?.image { 

      let margin = 30 - image.size.width/2 
      let titleRec = titleRect(forContentRect: bounds) 
      let titleOffset = (bounds.width - titleRec.width - image.size.width - margin)/2 


      contentHorizontalAlignment = UIControlContentHorizontalAlignment.left 
      imageEdgeInsets = UIEdgeInsetsMake(0, margin, 0, 0) 
      titleEdgeInsets = UIEdgeInsetsMake(0, titleOffset, 0, 0) 
     } 

    } 
} 

Auch wenn diese mich zu meinem gewünschten Ergebnis wirklich nahe kommt es nicht vollständig erreichen, was ich suche. Hier

ist, was meine aktuelle Tasten wie folgt aussehen:

Image for how Buttons currently look

Wie Sie wahrscheinlich den Text in der Google-Taste sehen können, obwohl zentriert für diese bestimmte Taste nicht entspricht mit, wie der Text der Facebook-Taste ist zentriert. Außerdem sind die Bilder ein bisschen zu groß, aber ich weiß nicht, wie man sie verkleinert.

Hier ist das Ergebnis ich suche:

Image for How I want my Buttons to look

Zum Schluss die Fragen, die ich habe, wie ich richtig den Text der Schaltfläche google Zentrum, so dass es mit der Gestaltung der Schaltfläche Facebook entspricht und Wie mache ich die Bilder kleiner?

Antwort

0

@Rohan Das Problem ist let margin = 30 - image.size.width/2. Sie verwenden Bildbreite, um den Rand herauszufinden. Die Bilder (facebook and google) Größe sind unterschiedlich (ich nehme an). Entsprechend Ihrem Code muss sich der linke Rand des Etiketts mit der Bildbreite ändern. Wenn Sie also erreichen wollen, müssen Sie beide Bildgrößen entsprechend Ihrem Code beibehalten.

Verwandte Themen