我正在开发一个可可应用程序。它包含一个具有一些功能按钮的工具栏。就像Reeder一样。如何使控制器在NSToolbar中移动,使用像Reeder或Mail.app的NSSplitViewController视图
我想在调整分割视图大小的同时调整工具栏部分的大小。一些工作如下。如何实现这种功能?
任何人都可以帮助我或给一些建议,将不胜感激。
我正在用XCode7,Swift和Storyboard进行开发。
我正在开发一个可可应用程序。它包含一个具有一些功能按钮的工具栏。就像Reeder一样。如何使控制器在NSToolbar中移动,使用像Reeder或Mail.app的NSSplitViewController视图
我想在调整分割视图大小的同时调整工具栏部分的大小。一些工作如下。如何实现这种功能?
任何人都可以帮助我或给一些建议,将不胜感激。
我正在用XCode7,Swift和Storyboard进行开发。
它是所有关于约束
如果工具栏是在SPLITVIEW:
工具栏上的约束集 “间距最近的邻居”,例如0左, right 然后按钮也必须有一个“与最近邻居的间距”,例如右边的8位
编辑:看到这里按钮添加约束http://oi63.tinypic.com/2s7szgi.jpg
我已经适应livingstonef的实现对于Swift 3还添加了缺失的NSBezierPath扩展名:
import Cocoa
@IBDesignable class ToolbarCustomView: NSView {
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
//The background
let startingColor = NSColor(red: 232/256, green: 230/256, blue: 232/256, alpha: 1)
let endingColor = NSColor(red: 209/256, green: 208/256, blue: 209/256, alpha: 1)
let gradient = NSGradient(starting: startingColor, ending: endingColor)
gradient?.draw(in: self.bounds, angle: 270)
//The bottom border
let borderPath = NSBezierPath()
let startingPoint = NSPoint(x: dirtyRect.origin.x, y: 0)
let stoppingPoint = NSPoint(x: dirtyRect.width, y: 0)
borderPath.move(to: startingPoint)
borderPath.line(to: stoppingPoint)
let shapeLayer = CAShapeLayer()
self.layer?.addSublayer(shapeLayer)
shapeLayer.path = borderPath.cgPath
shapeLayer.strokeColor = NSColor(red: 180/256, green: 182/256, blue: 180/256, alpha: 0.6).cgColor
shapeLayer.fillColor = .clear
shapeLayer.lineWidth = 1
}
}
extension NSBezierPath {
public var cgPath: CGPath {
let path = CGMutablePath()
var points = [CGPoint](repeating: .zero, count: 3)
for i in 0 ..< self.elementCount {
let type = self.element(at: i, associatedPoints: &points)
switch type {
case .moveToBezierPathElement:
path.move(to: points[0])
case .lineToBezierPathElement:
path.addLine(to: points[0])
case .curveToBezierPathElement:
path.addCurve(to: points[2], control1: points[0], control2: points[1])
case .closePathBezierPathElement:
path.closeSubpath()
}
}
return path
}
}
对不起,我不明白你的意思。你谈过哪个按钮?我想知道的是如何使分割控件与分割视图的分割器一起移动。他们似乎正确对齐。我不知道他们是否可以彼此添加任何约束。非常感谢你。如果你能给我更多的帮助,将不胜感激。 – morphinewan
在底部,您可以为每个选定对象设置约束条件 http://oi63.tinypic.com/2s7szgi.jpg – phimage
1.工具栏中的控制器不能添加任何约束。 2. SplitView下面和工具栏甚至不属于相同的父视图。我如何向他们添加约束? – morphinewan