Xcode 滚动视图不工作
Xcode scrollview not working
我正在制作游戏,需要用户签署最终用户许可协议 (EULA)。 EULA 很长,需要滚动查看。我希望屏幕本身保持静止,所以按钮和 header 始终存在:
这是我的 viewController 故事板的屏幕截图:
这是我的代码:
@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 或 "width" 有它,标签就会消失。
无论如何,滚动视图不会滚动。
PS:我之前让它工作,但后来我在 iPhone X 模拟器上试了一下,它是空白的。
您需要设置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
}
我正在制作游戏,需要用户签署最终用户许可协议 (EULA)。 EULA 很长,需要滚动查看。我希望屏幕本身保持静止,所以按钮和 header 始终存在:
这是我的 viewController 故事板的屏幕截图:
这是我的代码:
@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 或 "width" 有它,标签就会消失。
无论如何,滚动视图不会滚动。
PS:我之前让它工作,但后来我在 iPhone X 模拟器上试了一下,它是空白的。
您需要设置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
}