草庐IT

ios - 如何观察 NSView 框架的变化?

我有一个NSView,如果框架发生变化,我需要从中注意到它。classCustomView:NSView{overridevarframe:NSRect{didSet{Swift.print("changedframe:\(self.frame)")}}}但如果调整superView框架的大小,我只会收到此“通知”。如果我在NSView类中做这样的事情:NotificationCenter.default.addObserver(forName:Notification.Name(rawValue:"changeOwnSize"),object:nil,queue:nil){notif

macos - 如何在Swift语言中改变NSView的圆角半径

更改NSView的角半径应该非常简单,但是我收到错误消息“fatalerror:无法展开Optional.None”。我是否有机会使用10.9而不是10.10来执行此操作,并且由于框架差异而发生这种情况?或者代码错误。classaRoundView:NSView{letcornerRad=5.0init(frame:NSRect){super.init(frame:frame)self.layer.cornerRadius=cornerRad}overridefuncdrawRect(dirtyRect:NSRect){super.drawRect(dirtyRect)NSColor.

xcode - 在 Swift 中为自定义 NSView 提供指定的初始化程序

我有一个自定义的NSView类,如下所示:classMyClass:NSView{varmyClassVar:NSColor}当然,Xcode会提示我的类没有初始化器,所以我需要覆盖指定的初始化器,这样我才能初始化myClassVar。我该怎么做? 最佳答案 试试这个;classMyClass:NSView{varmyClassVar:NSColor!//theoptionalmark!tobenoticed.overrideinit(frameframeRect:NSRect){super.init(frame:frameRect

xcode - Failable och non-failable initializers 阻止我扩展 NSView 和实现 NSCoding

我在实现NSView的子类时遇到问题,它实现了NSCoding。似乎init(coder:NSCoder)的声明在NSView和NSCoding中有冲突。NSView现在说它是可失败的,但是NSCoding仍然说它是不可失败的。当我尝试覆盖init(coder:NSCoder)并进行自定义初始化时,Xcode6.1给我一条错误消息:Anon-failableinitializercannotchaintofailableinitializer'init(coder:)'writtenwith'init?'我应该如何对我的类进行自定义初始化?这是一个愚蠢的例子,我扩展了一个View,我想

objective-c - NSCell 与 NSView : when many controls are needed

我知道Apple正在弃用NSCell以支持NSView(请参阅AppKit10.10发行说明)。以前建议在需要许多控件时出于性能原因使用NSCell。我花了相当多的时间来实现一个需要很多subview的自定义控件,而使用NSView类型的subview的性能并不好。参见relatedstackoverflowdiscussion在一个窗口中可以拥有的NSView类型实例的数量方面的实际限制是什么?我一直在努力处理1000-2000个内存中对象(这看起来并不多)。此限制的实际原因是什么?让我在上面感到困惑的一件事是基于View的CocoaNSTableViews。您可以创建具有超过100

macos - 如何在整个屏幕上找到 NSView 的位置?

我正在编写OSX应用程序。我想在整个屏幕上找到一个NSView位置。我怎样才能找到那个职位。我不希望这个位置与NSWindow相关,而是在整个屏幕上的位置。这可能吗?或者我需要使用NSWindow的位置信息来找到它?谢谢。 最佳答案 可以使用NSWindow的方法-convertRectToScreen:将矩形从窗口坐标系转换到屏幕坐标系。NSRectrectInScreen=[self.view.windowconvertRectToScreen:self.view.frame];Documentation

class - 快速在 NSView 上画一条线

这是我目前的代码:classLineDrawer:NSView{requiredinit?(coderaDecoder:NSCoder){super.init(coder:aDecoder)}varline:Array=[]varlastPt:CGPoint!overridefuncmouseDown(theEvent:NSEvent){super.mouseDown(theEvent)letlocation=theEvent.locationInWindowprintln(location)}overridefuncmouseDragged(theEvent:NSEvent){sup

xcode - 在 Swift 2.0 中更改 NSView 的背景颜色

我正在尝试更改NSView的背景颜色,并尝试了thisanswer中概述的解决方案之一。.但是,它对我不起作用。我在这里错过了什么?我应该在这里使用viewWillAppear()还是仅适用于iOS?相关代码:classViewController:NSViewController{overridefuncviewDidLoad(){super.viewDidLoad()self.view.wantsLayer=true}overridevarrepresentedObject:AnyObject?{didSet{//Updatetheview,ifalreadyloaded.}}ov

swift - 如何在NSTextView上改变NSView和NSButton的鼠标样式

NSTextView之上还有一个NSView,NSTextview的范围比NSView的范围大。NSView有上面的一些NSButton等等,效果很好,但是鼠标样式让我有点摸不着头脑。我觉得当鼠标移动到NSView时,一直是箭头样式,其实不是,一直显示iBeam样式。因为是在NSTextView上,所以当我的鼠标移到NSView上的时候,显示的是iBeam风格。我通过覆盖funcmouseMoved(带有事件:NSEvent)实时更改鼠标NSCursor.arrow.set,虽然没关系,但我发现它会闪烁并偶尔显示iBeam。是图层的问题吗?或者我应该做的更好,至少不会闪烁。我看了一些问

swift - 如何使用 Swift 在 Cocoa App 中设置 NSView 的颜色?

我以前是为iOS开发的,我不明白为什么我不能轻易地改变主视图中NSView的背景颜色。假设我有一个带有主视图的ViewController。在此View中,我添加了3个自定义View,我设置了它们的约束以适合主视图。我已经为我的ViewController创建了3个导出:@IBOutletweakvartopView:NSView!@IBOutletweakvarleftView:NSView!@IBOutletweakvarrightView:NSView!之后,我试图设置这些View的背景,但无法执行此操作。运行应用程序时我没有看到任何颜色变化。这是我添加的用于显示自定义View颜