我正在使用带有网格的 NSScrollview 。一切正常,滚动条按预期移动 GridView 。我现在希望通过 slider 控制滚动。这工作正常并移动滚动条。不幸的是,这实际上并没有 ScrollView 。但如果你使用滚动条就会这样。我尝试过 NSScrollerNoPart,我认为它可能需要激活。我查看了所有 IB 窗口以找到可以打开它的东西。感谢您的转发
这是我的代码 Swift 3 Xcode8 OSX MacOS 而不是 IOS
// MainWindowController.swift
import Cocoa
class MainWindowController: NSWindowController {
@IBOutlet weak var scrollView: NSScrollView!
@IBOutlet weak var containerView: NSView!
@IBOutlet weak var gridView: GridGUI!
@IBOutlet weak var scrollbar: NSScroller!
override func windowDidLoad() {
super.windowDidLoad()
//NSScrollerNoPart = true
}//EO Overide
@IBAction func mySlider(_ sender: AnyObject) {//set to min 0 max 1
let data = sender.floatValue
print("Data",data)
scrollbar.floatValue = Float(data!)
gridView.display()
scrollView.display()
containerView.display()
}//eo slider
}//EnD oF thE wORld
class GridGUI: NSView {
var xPosArray = [Int]()
override func draw(_ dirtyRect: NSRect) {
//--------- BACKGROUND
let back1 = NSMakeRect(0,0,9000,482)
let back1Color = NSColor(red: 0.3, green: 0.3, blue: 0.5, alpha: 0.2)
let back1Path: NSBezierPath = NSBezierPath(rect: back1)
back1Color.set()
back1Path.fill()
var gridY:CGFloat = 0.0 //Vertical position
var gridYGray:CGFloat = 0.9
for i in 0..<225{
if (i % 16 == 0){gridYGray = 0.2}
else{gridYGray = 0.7}
//--------- VERTICAL GRID LINES
let gridY1 = NSMakeRect(gridY,0, 4.0,480)
let gridY1Color = NSColor(red: gridYGray, green: gridYGray, blue: gridYGray, alpha: 1.0)
let gridY1Path: NSBezierPath = NSBezierPath(rect: gridY1)
gridY1Color.set()
gridY1Path.fill()
gridY = gridY + 40.0
}
//HORIZONTAL GRID LINES
var gridX:CGFloat = 0.0
for _ in 0..<25{
//--------- HORIZONTAL GRID LINES
let gridX1 = NSMakeRect(0,gridX,9000,2)
let gridX1Color = NSColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)
let gridX1Path: NSBezierPath = NSBezierPath(rect: gridX1)
gridX1Color.set()
gridX1Path.fill()
gridX = gridX + 20.0
}
}}
最佳答案
为了回答我自己的问题,所需要做的就是在 mySlider 内创建一个 CGPoint
let myPoint = CGPoint(x:Double(data),y:0.0)
然后使用
containerView.scroll(myPointer)
不需要删除的项目
gridView.display()
scrollbar.floatValue = Float(data!)
scrollView.display()
containerView.display()
关于swift - slider 控制 NSScroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42956167/