2016-06-07 1 views
1

В одном ViewController моего приложения есть UITextView. Я хочу, чтобы в конце текста появилась кнопка «Разрешить Push-уведомления». Но так как кнопка статична, текст в TextView динамический, в зависимости от ширины экрана, он выглядит очень плохо на некоторых устройствах и ориентациях.Место UIButton в конце текста в UITextView в приложении iOS в Xcode, написанном в Swift

Кто-нибудь знает, как решить эту проблему? Есть ли возможность вставить кнопку в TextView. Или я могу выровнять кнопку в зависимости от высоты содержимого TextView?

С уважением, David.

+0

Почему текстовый вид, а не ярлык? – Wain

+0

@luiyezheng На самом деле кнопка центрирована по горизонтали и по вертикали. Он выглядит нормально на большинстве устройств, кроме 4-х и 3,5-дюймовых устройств. –

+0

@Wain Поскольку существует около шести предложений. –

ответ

5

UITextView подклассы от UIScrollView, вы можете использовать это в ваших интересах, чтобы добавить подвидов к нему, как вы бы любой нормальный UIScrollView, хитрость заключается в том, чтобы компенсировать текстовый контейнер текстового вида по по высоте кнопки + обивка. Например:

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) 

Это даст вам следующий вывод:

enter image description here

Надеется, что это помогает!

+0

Спасибо. он и вернётся к вам. –

+0

Должен ли я разместить UITextView и UIButton в моем ViewController на моей раскадровке? –

+0

... и создать @ IBOutlet's? –