我有一个UIScrollView
,其中包含一个大的UITextView
。我创建了一个约束来使文本视图宽度为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)
当应用程序启动时, scrollView
和wordLabel
尺寸正确,但当横向更改为横向时,滚动会变得过高。
我真的不知道如何重新计算scrollView
contentSize的方向更改,任何想法?
答案 0 :(得分:1)
你有两种方式:
设置高度约束,并执行以下操作:
wordLabelConstraintHeight.costant = (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) ? 60.0 : 25.0;
如果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%,我确定它会根据屏幕大小而变化,因此根据界面的方向。