lul*_*ulu 5 cocoa core-animation objective-c nstextfield
窗口的contentView有NSTextFields.(苹果系统)
我正在使用界面构建器来设置窗口及其功能,所以awakeFromNib中没有任何内容,除了这个:
[[self.window contentView] setWantsLayer:YES];
CALayer *layer = [[self.window contentView] layer];
CGColorRef lightGray = CGColorCreateGenericGray(0.93, 1.0);
[layer setBackgroundColor:lightGray];
CGColorRelease(lightGray);
Run Code Online (Sandbox Code Playgroud)
但是,textField的焦点环在textField的边界之外是不可见的.
带图层:

没有图层:

我认为这个显示问题比这更大,但我找不到这个问题的例子,(和解决方案).
任何人?
这是一个众所周知的问题 - 在2008年的Cocoa-dev邮件列表中有一个提及.焦点环实际上被绘制在其视图的框架之外.允许NSView绘图执行此操作,但它不适用于CALayers.尽管Leopard AppKit发行说明中有一个充满希望的注释,称为Views,Focus Rings和Drawing Performance,但这并没有改变.
从理论上讲,可以使用文本字段的"图层"框架,并添加一些填充以使聚焦环完全显示.但是,我刚试过这个,似乎至少对于NSTextField来说,它不会在一个改变的帧内整齐地绘制.不过尝试一下 - 我没有长时间大惊小怪.(聚焦环在每个方向上从帧中伸出4个像素.)
就像一个注释,你在技术上打破了层支持的规则,这可能是你遇到困难的部分原因.来自NSView setWantsLayer:docs:
使用图层支持的视图时,不应直接与图层交互.
您正在使用图层支持的视图并更改其背景.您可以通过制作自己的图层来解决这个问题,但是:
使用图层托管视图时,不应依赖视图进行绘制,也不应将子视图添加到图层托管视图.
它排除了在视图中放置文本字段.
(如果需要,请参阅此SO问题:层支持和层托管视图之间的区别?)
| 归档时间: |
|
| 查看次数: |
1207 次 |
| 最近记录: |