2016-11-19 5 views
0

Ich versuche einen klickbaren "textonly" -Button zu setzen, aber momentan habe ich Probleme die Höhe für meinen Button zu fixieren. Vor all dem habe ich versucht, es als Label zu haben, aber dann wird der Touchhandling kompliziert, also habe ich beschlossen, einfach einen Button ohne Frame etc. zu machen. Also muss ich jetzt die buttonheight auf den Text setzen, der drin ist, irgendwelche Ideen? Heres ein Code-Schnipsel:Größe der UIButton-Höhe mit Code ändern?

//... 
    button.setTitle("Log in", for: .normal) 
    button.setTitleColor(.white, for: .normal) 
    button.layer.borderWidth = 0 
    button.frame = CGRect 
    button.addTarget(self, action: #selector(LoginFunction), for: .touchUpInside) 
    //... 

Antwort

0

Sie sollten noch einen Rahmen für die Schaltfläche müssen in der Benutzeroberfläche angezeigt werden. Es definiert die Position und Größe Ihrer Taste (einschließlich der Höhe). Hier ist ein Beispiel für die Taste mit der Position (0,0) und Größe (100,100):

button.frame = CGRect(x: 0, y: 0, width: 100, height: 100) 

Vielleicht, was Sie mit „Rahmen“ bedeutet ist „Grenze“. Sie können borderless button erreichen, indem Sie borderWidth auf 0 setzen, was Sie bereits in Ihrem Code getan haben.

button.layer.borderWidth = 0 

Wenn Sie für die Textgröße festlegen, die Sie tun können:

button.titleLabel?.font = UIFont.systemFont(ofSize: 17) 
1

Wenn Sie in Ihrem mehrere Textzeilen wollen UIButton sollten Sie setzen yourButton.titleLabel?.numberOfLines = 0 und yourButton.titleLabel?.lineBreakMode = .byWordWrapping. Sie erhalten eine mehrzeilige Schaltfläche, deren Höhe Sie beliebig konfigurieren können. Auch Sie berechnen Rahmen Ihres Textes, den Sie verwenden sollten

let context = NSStringDrawingContext() 
let frame = yourText.boundingRectWithSize(
    CGSize(width: yourButtonWidth, height: 9999), 
    options: NSStringDrawingOptions.UsesLineFragmentOrigin, 
    attributes: dictionaryOfYourTextAttributes, context: context)