Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 使用自动布局快速增长的UITextView_Swift_Xcode6_Uitextview_Uitextviewdelegate - Fatal编程技术网

Swift 使用自动布局快速增长的UITextView

Swift 使用自动布局快速增长的UITextView,swift,xcode6,uitextview,uitextviewdelegate,Swift,Xcode6,Uitextview,Uitextviewdelegate,我想自动调整UITextView的大小,类似于sms应用程序或whatsapp。我只找到了objective-c的解决方案,示例项目的代码太多了。我需要用斯威夫特的 问:当用户使用换行符键入消息时,如何按字体大小调整UITextView的大小?您可以使用UITextViewDelegate执行此操作。我不知道如何通过自动布局实现这一点 func textViewDidChange(textView: UITextView) { var fixedWidth : CGFlo

我想自动调整UITextView的大小,类似于sms应用程序或whatsapp。我只找到了objective-c的解决方案,示例项目的代码太多了。我需要用斯威夫特的


问:当用户使用换行符键入消息时,如何按字体大小调整UITextView的大小?

您可以使用UITextViewDelegate执行此操作。我不知道如何通过自动布局实现这一点

func textViewDidChange(textView: UITextView)
    {
        var fixedWidth : CGFloat = textView.frame.size.width
        var newSize : CGSize = textView.sizeThatFits(CGSizeMake(fixedWidth, CGFloat(MAXFLOAT)))
        var newFrame : CGRect = textView.frame
        newFrame.size = CGSizeMake(CGFloat(fmaxf((Float)(newSize.width), (Float)(fixedWidth))),newSize.height)

        textView.frame = newFrame
    }

谢谢你,阿尔文。使用自动布局时,这不起作用。我使用autolayout找到了objective-c库。将此导入我的Swift项目解决了我的问题。该库位于github上:
var textStorage: NSTextStorage!
var layoutManager: NSLayoutManager!
var textContainer: NSTextContainer!
var textPreview: UITextView!

 override func viewDidLoad() {
    super.viewDidLoad()

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

    let newTextViewRect = view.bounds
    let containerSize = CGSize(width: newTextViewRect.width, height: CGFloat.max + 5)

    textContainer = NSTextContainer(size: containerSize)
    layoutManager.addTextContainer(textContainer)

    textPreview = UITextView(frame: newTextViewRect, textContainer: textContainer)
    textPreview.font = UIFont(name: "Helvetica", size: 16)
    view.addSubview(textPreview)

    configureView()

    let length = count(textPreview.text)
    let range:NSRange = NSMakeRange(length , 1)
    textPreview.scrollRangeToVisible(range)

}

override func viewDidLayoutSubviews() {
    textPreview.frame = view.bounds
}