Xcode scrollview无法正常工作

时间:2017-11-14 03:48:56

标签: ios xcode swift3 interface-builder scrollview

我正在制作游戏并需要用户签署最终用户许可协议(EULA)。 EULA很长,需要滚动视图。我希望屏幕本身保持静止,因此按钮和标题始终存在:

以下是我的viewController故事板的屏幕截图:

enter image description here

这是我的代码:

@IBOutlet var eulaView: UIView!
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var label: UILabel!


override func viewDidLoad() {
    super.viewDidLoad()

    let width = eulaView.frame.width
    let height = eulaView.frame.height

    self.scrollView.frame = CGRect(x: 0, y: 0, width: width, height: height)

    self.label.frame = CGRect(x: 0, y: 0, width: width , height: 2000)
    self.label.text = "Lots of stuff"

}

奇怪的是,如果我将self.label.frame的宽度设置为100,它会显示出来。如果我有300或“宽度”,标签就会消失。

无论如何,滚动视图都不会滚动。

PS:我之前有过工作,但后来我在iPhone X模拟器上尝试了它,它是空白的。

1 个答案:

答案 0 :(得分:4)

您需要设置self.scrollView.contentSize = CGSize(width: width,height: 2000)

有时当你在故事板中更改设备时,屏幕显示为空白可能是它的xcode错误。

查找标签的动态高度取决于标签字符串。

func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{
    let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude))
    label.numberOfLines = 0
    label.lineBreakMode = NSLineBreakMode.byWordWrapping
    label.font = font
    label.text = text
    label.sizeToFit()

    return label.frame.height
}