2016-08-09 28 views
1

buttonändern Position zugeschrieben Titel Taste

Wie Sie sehen, ich will den Titel unter dem Bild ist und die horizontal sie beide Mitte. Sei vorsichtig, sie sind Bestandteile einer Schaltfläche. Ich habe versucht, Inset-Wert auf dem Interface Builder zu ändern, aber es hat nicht mit anderen Bildschirm funktioniert (ich benutze Auto-Layout), es vermasselt.

enter image description here

Kann ich es tun, indem IB mit oder müssen "harten Code"

+0

Sie wollen Schaltfläche Titel unter Schaltfläche Bild? – technerd

+0

Ja! Kannst du mir helfen? –

Antwort

1

in Interface Builder hilft es einfach ist, fügen Sie einfach einen Knopf ändern benutzerdefinierte geben wie unter Bild und auch Titel wie Einstellungen

enter image description here

und stellen Sie das Bild für Ihre Taste, ich setze es als settingsButton.png.

enter image description here

jetzt müssen u Ausrichtung beispielsweise festlegen,

enter image description here

nun u die Insekten für die Bild- und Titelsatz kann, Insekten einzustellen für die Bild u die edge für image wählen wie Bild unten, und stellen Sie die Insekten

enter image description here

und für Titel, wählen Sie jetzt edge für title und das Insekt wie unten Bild, stellen

enter image description here

und jetzt Ihre Schaltfläche sieht unten etwas wie

enter image description here

hoffen, dass diese u hilft :)

+0

danke für Ihre Hilfe! es hat definitiv funktioniert, weil ich es auf diese Weise gemacht habe :))). Also, was ich eigentlich will, ist die Ausrichtung für sie, ohne die Insekten zu setzen, deshalb habe ich das zweite Bild in meine Frage eingefügt. –

+0

verzeih mir! Ich habe dich verwirrt, weil ich nicht gut Englisch kann –

0

Versuchen Sie, eine CAShapeLayer auf die Schaltfläche Hinzufügen: -

1.) Legen Sie einen UIBezierPath mit dem rect : Rahmen definieren gleiche wie die der Taste

2.) eine CAShapeLayer mit Pfad zu der eines bezierPath

3.) text „B“ in der Mitte der Taste hinzufügen, indem ein CATextLayer: https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CATextLayer_class/

4.) hinzufügen, dass shapeLayer und Textebene als Subschicht auf die Schicht der Taste, insbesondere solchen Schicht ein jeweiliges zPosition in diesen geben, Fall -1

5.) Stellen Sie die Opazität (Alpha) für die erste Ebene ein, z. B. Button. Hier

ist, was der Code könnte wie folgt aussehen: -

import UIKit 

class ViewController: UIViewController { 

@IBOutlet weak var btn: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    setupButton() 

} 

func setupButton(){ 

    print(btn.bounds) 
    print(btn.frame) 

    let bezPath : UIBezierPath = UIBezierPath(rect: btn.bounds) 
    let lyr : CAShapeLayer = CAShapeLayer() 
    let txtLyr : CATextLayer = CATextLayer() 
    lyr.path = bezPath.CGPath 
    lyr.fillColor = UIColor.blueColor().CGColor 
    lyr.zPosition = -1 
    lyr.opacity = 0.5 
    txtLyr.string = "B" 
    //  txtLyr.font = 
    txtLyr.fontSize = 38.0 
    txtLyr.zPosition = -1 
    txtLyr.frame = btn.bounds 
    print(txtLyr.frame) 
    txtLyr.alignmentMode = kCAAlignmentCenter 
    btn.layer.addSublayer(lyr) 
    btn.layer.addSublayer(txtLyr) 
} 


@IBAction func btnAction(sender: UIButton) { 

    print("Button is pressed!") 

    } 
} 

Mit diesem ist der Ausgang: - Simulator Screen

PS: 1.) In Ihrem Fall nur CATextLayer benötigt würde ...

2.) Das rote Kreis-Ding, das Sie in der Schaltfläche sehen, ist ein Bild.

Ich hoffe, das

+0

Vielen Dank! Es funktionierte. Weißt du wie man es mit dem Interface Builder macht? –

+0

Was Sie hier fragen, ist eigentlich ein 3D-Design, das nach meinem Wissen nur durch Code nicht Interface Builder erreicht werden kann. Bitte akzeptieren Sie die Antwort, wenn dies Ihr Problem löst. – Dravidian

+0

Ja, es hat definitiv funktioniert :)). Mach dir keine Sorgen! Ich schätze es –