gpt4 book ai didi

swift - slider 控制 NSScroller

转载 作者:行者123 更新时间:2023-11-30 12:35:18 26 4
gpt4 key购买 nike

我正在使用带有网格的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com