ios - 具有更宽 UIView 的 UIScrollView 不滚动
问题描述
我正在学习用来UIScrollView
制作几张可以水平滚动的图片。这些图像以编程方式作为子视图添加到UIView
inside UIScrollView
。“启用滚动”也设置为 true。但是,当我运行应用程序时,UIScrollView
无法滚动。
这是我的代码。
class ViewController: UIViewController {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var scrollContentView: UIView!
var imageViews = [UIImageView]()
override func viewDidLoad() {
super.viewDidLoad()
let imageWidth: CGFloat = 200.0 / 768.0 * 1024.0
for i in 1...3 {
let image = UIImage(named: "image\(i)")
let imageView = UIImageView(image: image)
imageViews.append(imageView)
let x: CGFloat = CGFloat(i - 1) * (imageWidth + 10)
scrollContentView.addSubview(imageView)
print(imageView.frame)
imageView.frame = CGRect(x: x, y: 0, width: imageWidth, height: 200.0)
}
scrollContentView.frame = CGRect(x: 0.0, y: 0.0, width: imageWidth * 3 + 20.0, height: 200.0)
scrollView.contentSize = scrollContentView.frame.size
}
}
解决方案
无需scrollContentView
在 Interface Builder 中创建,而是以编程方式创建它。
Xcode 将不再抱怨缺少约束,您将能够手动使用框架。
class ViewController: UIViewController {
@IBOutlet weak var scrollView: UIScrollView!
var scrollContentView: UIView!
var imageViews = [UIImageView]()
override func viewDidLoad() {
super.viewDidLoad()
scrollContentView = UIView()
scrollView.addSubview(scrollContentView)
let imageWidth: CGFloat = 200.0 / 768.0 * 1024.0
for i in 1...3 {
let image = UIImage(named: "image\(i)")
let imageView = UIImageView(image: image)
imageViews.append(imageView)
let x: CGFloat = CGFloat(i - 1) * (imageWidth + 10)
scrollContentView.addSubview(imageView)
print(imageView.frame)
imageView.frame = CGRect(x: x, y: 0, width: imageWidth, height: 200.0)
}
scrollContentView.frame = CGRect(x: 0.0, y: 0.0, width: imageWidth * 3 + 20.0, height: 200.0)
scrollView.contentSize = scrollContentView.frame.size
}
}
推荐阅读
- oracle-jet - 默认十进制格式 Oracle JETt
- amazon-web-services - 在 aws_eks_node_group 块中使用 launch_template 的正确方法是什么?
- javascript - 某些页面上的 Laravel CSRF 令牌不匹配
- c# - 如何为可枚举类型返回 NotFound()?
- javascript - 从参数化的 module.exports 调用函数
- c# - .NET Core EF 一对多/多对多
- python - Python 打印相同的“您有资格申请成为美国参议员或众议员”。尽管输入了超出该范围的年龄,但声明
- javascript - 如何设置使用 v-model 的值输入?- 拉拉维尔
- c# - .net C# - Winform 在标题栏上出现“未响应”消息后被停用
- c# - 从矢量 CANoe 对象启动/执行 XML 测试节点