gpt4 book ai didi

ios - 使用 AutoLayout 在方向更改时更改 UITextView 高度

转载 作者:行者123 更新时间:2023-11-29 02:16:45 26 4
gpt4 key购买 nike

我有一个 UIScrollView,里面有一个很大的 UITextView。我创建了一个约束,使 TextView 宽度为 100%,我现在希望 TextView 在方向更改时调整高度,但我找不到如何执行此操作。

这是我现在的代码:

var wordLabel = UITextView()
wordLabel.attributedText = wordText
wordLabel.editable = false
wordLabel.scrollEnabled = false
wordLabel.setTranslatesAutoresizingMaskIntoConstraints(false)

let wordLabelSize = wordLabel.sizeThatFits(maxLabelsSize)
wordLabel.frame = CGRectMake(0, 0, wordLabelSize.width, wordLabelSize.height)
wordLabel.center = CGPoint(x: wordLabel.frame.width / 2, y: wordLabel.frame.height / 2)
scrollView.addSubview(wordLabel)


let wordLabelConstraintWidth = NSLayoutConstraint(item: wordLabel, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: scrollView, attribute: NSLayoutAttribute.Width, multiplier: 1, constant: -32)
scrollView.addConstraint(wordLabelConstraintWidth)

scrollView.contentSize = CGSize(width: scrollView.frame.width - 32, height: wordLabel.frame.origin.y + wordLabel.frame.height)

scrollViewwordLabel 大小在应用启动时是正确的,但当方向变为横向时,滚动会变得太高。

我真的不知道如何根据方向变化重新计算 scrollView contentSize,知道吗?

最佳答案

你有两种方式:

  1. 为高度设置一个约束,并执行如下操作:

    wordLabelConstraintHeight.costant = (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) ? 60.0 : 25.0;
  2. 如果 textView 应根据屏幕按比例调整自身大小,您可以使用乘数:

    let wordLabelConstraintHeight = NSLayoutConstraint(item: wordLabel, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: scrollView, attribute: NSLayoutAttribute.Height, multiplier: 0.2, constant: 0)

    例如,此代码使您的 textView 的高度,scrollView 框架的 20% 我确定会根据屏幕尺寸而变化,并且所以根据界面的方向。

关于ios - 使用 AutoLayout 在方向更改时更改 UITextView 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28664493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com