小编Iva*_*lov的帖子

macOS 10.12自动布局问题

在10.12中有几个巨大的变化,但在我看来最大的是新的自动布局系统(或修改/重写旧的...谁知道).我准备了一个简单的项目来证明这个问题.它与通过按钮折叠拆分视图项目有关.它只发生在10.12.您需要做的就是编译项目并单击按钮.将出现错误:

2016-10-04 15:10:28.284296 test-12 [64932:7425277] [布局]检测到缺失约束.它无法放置,因为没有足够的约束来完全定义大小和原点.添加缺少的约束,或设置translatesAutoresizingMaskIntoConstraints = YES,并为您生成约束.如果此视图在macOS 10.12及更高版本上手动布局,您可以选择不从覆盖中调用[super layout].在DETECTED_MISSING_CONSTRAINTS上设置断点以进行调试.此错误仅记录一次.

设置断点后,我们可以发现有问题的视图是:

(lldb) po $arg1
<NSSplitDividerView: 0x618000161980>
Run Code Online (Sandbox Code Playgroud)

我完全错了还是10.12有明确的问题?如果可能的话,请建议如何防止此类错误.

该项目可以从github下载

再次感谢您的帮助.

I. Nikolov

macos-sierra

9
推荐指数
1
解决办法
2532
查看次数

NSTextStorage轻松/更改背景属性

我正在用一个相对较小的文本编辑器来完成一个不错的应用程序。在语法突出显示的实现过程中,我发现自己需要更改已识别标记的前景色属性。我注意到有一个NSTextStorage属性:

var fixesAttributesLazily: Bool { get }
Run Code Online (Sandbox Code Playgroud)

有关的文档是:

一个布尔值,指示文本存储对象是否延迟固定属性。(只读)

讨论区

子类化时,此属性的默认值为NO,这意味着子类在属性更改时会立即修复。系统的具体子类覆盖此属性并将其设置为YES。

我真的不知道该怎么解释...但这就是我所做的:

  1. 我正在更改内部已识别标记的属性textStorage(textStorage: NSTextStorage, didProcessEditing editedMask: NSTextStorageEditActions, range editedRange: NSRange, changeInLength delta: Int)(这是NSTextStorage的委托方法)。在这里,我正在检查此属性的值-它为FALSE。
  2. 我完全按照Apple的建议对NSTextStorage进行了子类化(https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/TextStorageLayer/Tasks/Subclassing.html),并覆盖了该属性。文本视图开始表现得很奇怪。实际上,使用小文本即可执行,但一旦打开4 MB文件,它就会挂起,并且……好……我的mac电脑开始发生坏事。实际上,此行为并不取决于fixesAttributesLazily属性的值。也许我对NSTextStorage的实现是不好的,或者至少不是很复杂。

欢迎在后台或懒惰地或...应用属性的任何技巧。

另外:我知道有很多方法可以优化突出显示的语法。它可能会部分突出显示,根据更改的范围使用某种逻辑...等等。我正在寻找的是一种在后台处理属性更改的方法。例如,当前,当我将4 MB文件粘贴到文本视图时,它首先突出显示它(需要2-3秒),然后将其可视化。我要寻找的效果是立即显示文字,并在一段时间后显示颜色。

我正在处理的项目是用Swift编写的。

预先感谢大家的帮助。您可以通过gmail dot com上的ivailon与我联系以获取详细信息,因为我不想在这里公开该应用程序...至少现在还没有;-)

nslayoutmanager nstextview nstextstorage swift

5
推荐指数
0
解决办法
408
查看次数

macOS WKWebView背景透明度

如果有人有经验WKWebView,请分享如何使视图的背景透明.该WebView对象有这样的选项,var drawsBackground: Bool { get set }但它缺少WKWebView类.我在网上搜索了......什么都没发现.在时间之前,可以通过opaque财产这样做,但现在不行了.有吸气剂isOpaque......就是这样.我不想通过CSS来做,并且已经尝试了其他所有内容,例如:

webview.wantsLayer = true

webview.layer?.backgroundColor = NSColor.clear.cgColor

如果有人可以帮忙......

I. Nikolov

macos swift wkwebview

1
推荐指数
1
解决办法
1067
查看次数