Mar*_*k L 6 uiscrollview ios swift
我一直在寻找一个(工作)教程的日子,甚至是一个使用UIScrollView垂直滚动的示例应用程序,这是编程的.有很多关于使用故事板的教程,让我感到茫然.
我查看了苹果的文档,他们的"指南"仍然没有一个坚实的例子或暗示从哪里开始.
我到目前为止所尝试的是做了以下一些事情.
让我的视图成为一个直接在课堂上的scrollview
let scrollView = UIScrollView(frame: UIScreen.mainScreen().bounds)
Run Code Online (Sandbox Code Playgroud)
然后将其分配给我的viewDidLoad函数中的视图
self.view = scollView
Run Code Online (Sandbox Code Playgroud)
试图更改内容大小.
self.scrollView.contentSize = CGSize(width:2000, height: 5678)
Run Code Online (Sandbox Code Playgroud)
试图启用滚动
scrollView.scrollEnabled = true
Run Code Online (Sandbox Code Playgroud)
以编程方式执行此操作时我能找到的最后一个建议
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
scrollView.frame = view.bounds
}
Run Code Online (Sandbox Code Playgroud)
目前我没有尝试开始将我的对象添加到scrollview,(我不需要缩放,只需要进行垂直滚动),但我没有设法得到任何工作:(事实上,运行应用程序与那些添加只会导致UIProblems,屏幕向上移动奇怪,它不适合我的屏幕的整个宽度?我尝试修复使框架边界等于宽度,但仍然无法正常工作
我没有收到任何错误.
我很想看到一个可以垂直滚动的示例viewcontroller!或任何帮助将非常感谢!
编辑灾难的屏幕截图,尝试使我的视图可滚动导致.
http://i.stack.imgur.com/gQ0SC.png
(链接而不是图像,由于缺少直接放置图像的点.)
(我将滚动视图背景设置为红色,看看它是否显示正确.它似乎是.但我不能滚动到任何地方
正如评论中所建议的那样,我没有使用self.view = self.scrollview,而是尝试将scrollview添加为self.view的子视图,但没有取得积极的结果.
编辑2:
加入
scrollView.contentSize = CGSize(width:2000, height: 5678)
Run Code Online (Sandbox Code Playgroud)
to viewDidLayoutSubviews,如下面的评论中所建议的那样使我的视图可滚动!
然而,由于某种原因,我的布局仍然看起来像一个完全混乱(看起来它应该是,在我使它可滚动之前).
这是我的topBar(蓝色)的示例约束,它应该占据整个水平空间.
self.scrollView.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"H:|[topBar]|", options: nil, metrics: nil, views: viewsDictionary))
Run Code Online (Sandbox Code Playgroud)
任何想法为什么这不起作用?
严格来说,我觉得问题在于线下.
self.view = scollView
Run Code Online (Sandbox Code Playgroud)
它应该是 self.view.addSubview(scollView)
然后在scrollview中添加所有标签,按钮等,然后给出内容大小.
内容大小是告诉scrollview滚动的参数.
放在self.scrollView.contentSize = CGSize(width:2000, height: 5678)
里面viewDidLayoutSubviews
.
小智 7
斯威夫特4.2
我给出了使用自动布局滚动堆栈视图的简单完整示例。
所有视图都在代码中,不需要故事板。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(scrollView)
scrollView.addSubview(scrollViewContainer)
scrollViewContainer.addArrangedSubview(redView)
scrollViewContainer.addArrangedSubview(blueView)
scrollViewContainer.addArrangedSubview(greenView)
scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
scrollViewContainer.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true
scrollViewContainer.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor).isActive = true
scrollViewContainer.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
scrollViewContainer.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
// this is important for scrolling
scrollViewContainer.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true
}
let scrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.translatesAutoresizingMaskIntoConstraints = false
return scrollView
}()
let scrollViewContainer: UIStackView = {
let view = UIStackView()
view.axis = .vertical
view.spacing = 10
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
let redView: UIView = {
let view = UIView()
view.heightAnchor.constraint(equalToConstant: 500).isActive = true
view.backgroundColor = .red
return view
}()
let blueView: UIView = {
let view = UIView()
view.heightAnchor.constraint(equalToConstant: 200).isActive = true
view.backgroundColor = .blue
return view
}()
let greenView: UIView = {
let view = UIView()
view.heightAnchor.constraint(equalToConstant: 1200).isActive = true
view.backgroundColor = .green
return view
}()
}
Run Code Online (Sandbox Code Playgroud)
希望对您有所帮助!
归档时间: |
|
查看次数: |
11890 次 |
最近记录: |