【发布时间】:2012-02-03 05:26:02
【问题描述】:
我创建了一个自定义窗口来覆盖 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
【问题讨论】:
-
如果您将
[self setHasShadow:NO]放入awakeFromNib,而不是在您的初始化中会发生什么? -
@sudorm-rf 我尝试将 [self setHasShadow:NO] 放入 awakeFromNib 中,这会使阴影消失。但如果我可以直接在构造函数中执行此操作,我会更喜欢。在调用构造函数和调用 awakeFromNib 之间有什么可能会改变设置?
-
好吧,问题是IB在调用初始化之后配置你的窗口。
awakeFromNib在 IB 初始化您的视图后调用。因此,IB 中的(大多数)设置将优先于初始化程序中的设置。 -
@sudorm-rf 但是我在构造函数中以编程方式调用了许多未被 IB 覆盖的东西(即延迟标志)。我很好奇为什么 [self:setHasShadow:NO] 特别没有被覆盖。
标签: objective-c macos cocoa user-interface window