Swift 动态添加到NSStackView并添加滚动功能
正如标题所说,我正在尝试将NSTextView和NSImageView动态添加到NSStackView。首先,我使用IB添加了一个滚动视图,它形成了一个有边框的滚动视图->剪辑视图->主视图->堆栈视图(垂直)的层次结构。我希望能够动态地将视图添加到堆栈视图中,并能够滚动浏览所有视图。我在带边框的滚动视图上使用了autolayout 问题:我通过添加100个NSTextViews并增加它们的y位置以相互叠加来测试这一点。但是,我无法滚动到顶部。几天来我一直在试图理解这一点,但我就是想不出来。我无法滚动并查看所有文本视图,但当我增加窗口大小时,可以看到更多的文本视图。蒂亚`Swift 动态添加到NSStackView并添加滚动功能,swift,macos,cocoa,Swift,Macos,Cocoa,正如标题所说,我正在尝试将NSTextView和NSImageView动态添加到NSStackView。首先,我使用IB添加了一个滚动视图,它形成了一个有边框的滚动视图->剪辑视图->主视图->堆栈视图(垂直)的层次结构。我希望能够动态地将视图添加到堆栈视图中,并能够滚动浏览所有视图。我在带边框的滚动视图上使用了autolayout 问题:我通过添加100个NSTextViews并增加它们的y位置以相互叠加来测试这一点。但是,我无法滚动到顶部。几天来我一直在试图理解这一点,但我就是想不出来。我无
import Cocoa
class ViewController: NSViewController {
var xLoc = CGFloat(0)
var yLoc = CGFloat(0)
@IBOutlet weak var mainView: NSStackView!
@IBOutlet weak var belowMainView: NSStackView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
for index in 1...100 {
var txt = "Num: \(index)"
setup(text: txt)
}
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
func setup(text: String){
let tempTextView = NSTextView(frame: NSMakeRect(xLoc, yLoc, 320, 10))
tempTextView.append(text)
tempTextView.isEditable = false
tempTextView.translatesAutoresizingMaskIntoConstraints = false
// mainView.addSubview(tempTextView)
belowMainView.addSubview(tempTextView)
yLoc += 20
}
}
// Adding an append function to textView functionality
extension NSTextView {
func append(_ string: String) {
self.textStorage?.append(NSAttributedString(string: string))
// Scrolls to end of document if it is out of view
self.scrollToEndOfDocument(nil)
}
}`
好吧,所以我发现问题是我没有调整我的belowMainStackView的大小。但现在我有另一个问题。每次我调整视图的大小时,它都会向上增长,但我需要向下增长。有什么办法吗?看@Taylor谢谢,但我解决了!