gpt4 book ai didi

swift - 如何将偏移复选框列表添加到 NSScrollView?

转载 作者:行者123 更新时间:2023-11-28 06:25:00 31 4
gpt4 key购买 nike

我有一个 NSScrollView,我试图用复选框填充它(NSButton/NSToggleButton)。我添加的复选框数量应该等于数组中的项目数量。这部分正在工作。

以下代码成功地将复选框添加到 ScrollView ,但它们都在彼此之上。我正在尝试添加它们,但以“ ListView ”的方式相互偏移,例如 iOS 上的表格 View 。这是我的代码:

for calendar in self.allCalendars {
self.allCalendars.append(calendar as EKCalendar)
let checkbox = NSButton.init(checkboxWithTitle: calendar.title, target: self, action: #selector(self.checkboxDidChange))
checkbox.setButtonType(NSToggleButton)
self.checkboxArray.append(checkbox as NSButton)
self.addSubview(checkbox)
}

这是结果的屏幕截图:

enter image description here

最佳答案

这是您可以实现的东西,它会改变您执行循环的方式,以便您拥有每次迭代的索引,但它可以帮助您计算某种垂直间距:

for i in 0 ..< allCalendars.count {

let margin: CGFloat = 5.0 // Or whatever you want the padding on the left to be

let vertSpacing: CGFloat = 10.0 // However much separation you want in between boxes

self.allCalendars.append(allCalendars[i] as EKCalendar)
let checkbox = NSButton.init(checkboxWithTitle: allCalendars[i].title, target: self, action: #selector(self.checkboxDidChange))
checkbox.setButtonType(NSToggleButton)

// Now you can set the frame of the checkbox within it's superview's coordinate system
// This calculates it based on the bounds.height, if you want to use a custom height, substitute that.
checkbox.frame = CGRect(x: margin, y: vertSpacing + (vertSpacing + checkbox.bounds.height)*CGFloat(i), width: checkbox.bounds.width, height: checkbox.bounds.height)

self.checkboxArray.append(checkbox as NSButton)
self.addSubview(checkbox)

}

基本上,y 值 vertSpacing + (vertSpacing + checkbox.bounds.height)*CGFloat(i) 所做的是它以您设置的任何 y-pos 开始第一个复选框您的垂直间距值是,然后对于之后的每个复选框,它将在前一个复选框下方设置一个垂直间距值。此解决方案将假定每个复选框的高度相同。如果您不想使用 bounds.height 值,您可以设置自定义高度。

关于swift - 如何将偏移复选框列表添加到 NSScrollView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42191072/

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