我已经创建了一个自定义窗口来覆盖NSWindow。除了它有一个影子的事实之外,它完美地工作。我使用[self setHasShadow:NO]以编程方式设置阴影,但它仍然存在。但是,如果我使用[self hasShadow]进行检查,它将返回false。在可可中设置窗口的阴影?
我似乎让阴影消失的唯一方法是如果在Interface Builder中关闭阴影。是的,我意识到这是好的,但我很好奇为什么编程设置不会覆盖Interface Builder设置,即使其他编程设置也可以。
我不允许发布任何代码,因此请不要要求我这样做。
除了[self setHasShadow:NO]之外,我还需要做些什么来以编程方式设置窗口的阴影吗?
编辑:调用从awakeFromNib
[self setHasShadow:NO]
使阴影消失。不过,我想直接从构造不awakeFromNib
的Mac OSX雪豹时,Xcode 3.2.6
如果你把'[自setHasShadow:NO]会发生什么:'在'
此外,如果你使用无边框窗口你应该写这个禁用阴影awakeFromNib',而不是在你的初始化? – 2012-02-03 06:10:07
@ sudorm-rf我试图在awakeFromNib中放置[self setHasShadow:NO],这会让阴影消失。但我宁愿如果我可以直接在构造函数中做到这一点。在调用构造函数和awakeFromNib被调用之间可能会改变设置? – fdh 2012-02-03 20:27:00
嗯,问题是IB在你调用初始化后配置你的窗口*。在IB初始化您的视图后调用awakeFromNib。因此,IB中的(大多数)设置将优先于初始化程序中的设置。 – 2012-02-03 20:28:34