2015-10-02 4 views
0

После изменения размера textView я хочу, чтобы textContainer был того же размера (я хочу, чтобы текст был такой же ширины, что и размер textView) как textView. Итак, что я делаю прямо сейчас, я создаю программный код UITextView, затем (с текстом или без текста внутри textView). Меняю размер textView, изменяя его границы, но textContainer остается с тем же размером (текст в меньшем прямоугольнике, чем textView, который выглядит плохо).TextContainer не изменяет размер при изменении границ UITextView

Вот код:

let textStorage = NSTextStorage() 

let layoutManager = NSLayoutManager() 
textStorage.addLayoutManager(layoutManager) 

let textContainer = NSTextContainer() 
layoutManager.addTextContainer(textContainer) 

textContainer.widthTracksTextView = true 
textContainer.heightTracksTextView = true 

self.textView = UITextView(frame: textViewFrame, textContainer: textContainer) 

И позже:

self.textView.bounds = CGRect(x, y, newWidth, newHeight) 

В настоящее время я из идей, почему это не работает и не может найти решение.

ответ

3

Бросьте это на площадку. Комментируйте/по-разному, чтобы установить размер textView. Установка bounds действительно не обновляет контейнер. установка frame или size делает.

import Foundation 
import UIKit 
import XCPlayground 

var str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean feugiat purus a pharetra rhoncus. Phasellus eget velit risus. Duis varius et massa non pretium. Praesent sollicitudin egestas mi, non cursus eros ornare congue. Pellentesque ex leo, hendrerit posuere euismod ut, ultricies eleifend lectus. Phasellus eu interdum sem. Quisque ut condimentum justo. Integer non neque mauris. Vestibulum eu tellus ac nunc mollis maximus a vitae lectus. In hac habitasse platea dictumst. Sed neque sapien, elementum quis volutpat quis, dictum id ligula. Cras egestas finibus fermentum." 

let textViewFrame = CGRectZero 

let textStorage = NSTextStorage() 

let layoutManager = NSLayoutManager() 
textStorage.addLayoutManager(layoutManager) 

let textContainer = NSTextContainer(size: textViewFrame.size) 
layoutManager.addTextContainer(textContainer) 

textContainer.widthTracksTextView = true 
textContainer.heightTracksTextView = true 

var textView = UITextView(frame: textViewFrame, textContainer: textContainer) 
XCPShowView("MyView", view: textView) 

textView.text = str 

//textView.bounds = CGRect(x: 0, y: 0, width: 200, height: 200) 
//textView.frame = CGRect(x: 0, y: 0, width: 200, height: 200) 
textView.frame.size = CGSize(width: 200, height: 200) 

//textView.bounds = CGRect(x: 0, y: 0, width: 400, height: 200) 
//textView.frame = CGRect(x: 0, y: 0, width: 400, height: 200) 
textView.frame.size = CGSize(width: 400, height: 200) 

Будущие читатели, если вы здесь, потому что вы вращая UITextView: Transform UITextView

+0

Вы правы, спасибо. Но одно: я изменял рамки вместо рамки, потому что textView вращается с CGAffineTransform. Что я должен делать в этой ситуации? –

+0

@ К. К. Черт, не слишком знакомый с CGAffineTransform. Хорошим местом для отладки является игровая площадка. (если ваш код довольно модульный) Вы можете напрямую видеть эффекты. Поэтому отладка идет быстрее. Возможно, попробуйте следующее: [хороший вращающийся код] (https://github.com/FlexMonkey/Rotatable) –

+0

@ K.K Пробовал код, который я связал. Также дает странные результаты. Сожалею! Присмотритесь ближе! –

Смежные вопросы