Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何从顶部而不是从底部添加按钮?_Swift_Cocoa - Fatal编程技术网

Swift 如何从顶部而不是从底部添加按钮?

Swift 如何从顶部而不是从底部添加按钮?,swift,cocoa,Swift,Cocoa,我目前正在构建一个导航左窗格,其中动态添加了侧面的按钮。我有一个NSView子类可以帮助实现这一点 func addButton(u服务:字符串){ 设btn=NSButton() btn.bezelStyle=.shadowlessSquare btn.frame.size=NSSize(宽:48,高:48) btn.image=NSImage(名称:服务) btn.imageScaling=.scaleaxes独立 btn.frame.origin=CGPoint(x:0,y:self.cu

我目前正在构建一个导航左窗格,其中动态添加了侧面的按钮。我有一个NSView子类可以帮助实现这一点

func addButton(u服务:字符串){
设btn=NSButton()
btn.bezelStyle=.shadowlessSquare
btn.frame.size=NSSize(宽:48,高:48)
btn.image=NSImage(名称:服务)
btn.imageScaling=.scaleaxes独立
btn.frame.origin=CGPoint(x:0,y:self.currentY)
self.addSubview(btn)
自身电流Y+=58
}
它可以根据需要工作,但按钮是从底部而不是顶部添加的:

如何使新按钮从顶部添加

作为参考,这里是我的故事板,其中包含按钮的“Servi”视图


Y在macOS上从下至上(底部为0)。因此,不要从0或10或任何你开始的地方开始。首先将当前Y设置为小于视图高度的一个按钮高度,然后每次减去58而不是相加

所以,你会得到这样的结果:

但如果你按照我描述的做,你会得到这样的结果:


您可以翻转视图,使坐标系从左上角开始。只需创建一个新的NSView子类并覆盖
isfliped

类FlippedView:NSView{
覆盖变量翻转:Bool{
得到{
返回真值
}
}
}

然后将新按钮添加到flippedview的实例中。

使用的
self.currentY-=58
,按钮现在位于底部,从窗口框架上被切断。是的,但我说的第一件事你没有做,这是从顶部开始的
currentY
。添加了屏幕显示,如果你按照我说的做,你会得到正确的结果。