2016-06-07 18 views
1

In einem ViewController meiner App gibt es eine UITextView. Ich möchte am Ende des Textes eine Schaltfläche "Push-Benachrichtigungen zulassen" haben. Aber da eine Schaltfläche statisch ist, ist der Text in der TextView dynamisch abhängig von der Breite der Anzeige sieht es auf einigen Geräten und Ausrichtungen wirklich schlecht aus.Platzieren Sie UIButton am Ende des Textes in UITextView in iOS App in Xcode geschrieben in Swift

Weiß jemand, wie man dieses Problem löst? Gibt es eine Möglichkeit, eine Taste in eine TextView einzufügen. Oder kann ich die Taste abhängig von TextView Inhaltshöhe ausrichten?

Grüße, David.

+0

Warum eine Textansicht und keine Beschriftung? – Wain

+0

@luiyezheng Eigentlich ist der Knopf horizontal und vertikal zentriert. Es sieht auf den meisten Geräten in Ordnung, außer auf 4 "und 3,5" Geräten. –

+0

@Wain Weil es ca. sechs Sätze gibt. –

Antwort

5

UITextView Subklassen von UIScrollView, können Sie diese zu Ihrem Vorteil nutzen Subviews, um es hinzuzufügen, wie würden Sie eine normale UIScrollView, der Trick ist, um die Höhe der Taste + Polsterung der Textansicht Text Behälter zu kompensieren. Zum Beispiel:

let textView = UITextView(frame: CGRect(x: 0, y: 0, width: 320, height: 500)) 
textView.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae fermentum tellus. Donec dui sem, viverra eu auctor eleifend, aliquet id lorem. Nam id sapien sed arcu auctor commodo nec nec nulla. Praesent id mi nec odio consequat varius id sit amet quam." 

let buttonHeight: CGFloat = 44 
let contentInset: CGFloat = 8 

//inset the textView 
textView.textContainerInset = UIEdgeInsets(top: contentInset, left: contentInset, bottom: (buttonHeight+contentInset*2), right: contentInset) 

let button = UIButton(frame: CGRect(x: contentInset, y: textView.contentSize.height - buttonHeight - contentInset, width: textView.contentSize.width-contentInset*2, height: buttonHeight)) 

//setup your button here 
button.setTitle("BUTTON", forState: UIControlState.Normal) 
button.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal) 
button.backgroundColor = UIColor.lightGrayColor() 

//Add the button to the text view 
textView.addSubview(button) 

Dies wird Ihnen die folgende Ausgabe:

enter image description here

hoffe, das hilft!

+0

Danke. Ich werde es versuchen –

+0

Muss ich ein UITextView und ein UIButton in meinem ViewController auf meinem Storyboard setzen? –

+0

... und @ IBOutlet's erstellen? –