在我的应用程序中,我想在层支持的NSTextView中提供文本缩放,如Apple的TextEdit.我使用它的ScalingScrollView模拟.另外我需要创建一些CALayer叠加self.window.contentView.一切都好,直到我做[self.window.contentView setWantsLayer:YES].
之前 [setWantsLayer:YES]

后 [setWantsLayer:YES]

我没有任何想法如何解决这个问题.
我们可以改变分频器的颜色吗?Apple文档说,我们可以在NSSplitView的子类中覆盖-dividerColor,但这对我不起作用,或者我的理解不正确.我也尝试在分隔符上创建颜色层,例如:
colorLayer = [CALayer layer];
NSRect dividerFrame = NSMakeRect([[self.subviews objectAtIndex:0] frame].size.width, [[self.subviews objectAtIndex:0] frame].origin.y, [self dividerThickness], self.frame.size.height);
[colorLayer setBackgroundColor:[color coreGraphicsColorWithAlfa:1]];
[colorLayer setFrame:NSRectToCGRect(dividerFrame)];
[self.layer addSublayer:colorLayer];
Run Code Online (Sandbox Code Playgroud)
不行.
在我的 Swift 项目中,我需要通过ScriptingBridge框架与 iTunes 通信。根据 Apple 文档,我使用 .createiTunes.h文件sdef /Applications/iTunes.app | sdp -fh --basename iTunes,然后将 ScriptingBridge.framework 链接到项目并使用#import "iTunes.h".
但是当我尝试获取任何 iTunes 应用程序属性时,例如
var iTunesApp: iTunesApplication? = SBApplication.applicationWithBundleIdentifier("com.apple.iTunes") as? iTunesApplication
let currentTrack: iTunesTrack? = iTunesApp?.currentTrack
Run Code Online (Sandbox Code Playgroud)
我收到链接器错误,例如
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_iTunesApplication", referenced from:
__TFC5NowP_14iTunesWorker21fetchCurrentTrackInfofS0_FT_T_ in iTunesWorker.o
__TFC5NowP_14iTunesWorkercfMS0_FT_S0_ in iTunesWorker.o
_get_field_types_iTunesWorker in iTunesWorker.o
"_OBJC_CLASS_$_iTunesTrack", referenced from:
__TFC5NowP_14iTunesWorker21fetchCurrentTrackInfofS0_FT_T_ in iTunesWorker.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 …Run Code Online (Sandbox Code Playgroud) 这可以在Steam Acheivements API中获得成就解锁日期吗?我已经阅读了一堆文档,但没有提到这一点.
我需要NSTextView使用CALayeroverlay 来突出显示使用overlay的行,并在我的子类中使用此代码获取rect for line NSTextView...:
- (NSRect)overlayRectForRange:(NSRange)aRange
{
NSScreen *currentScreen = [NSScreen currentScreenForMouseLocation];
NSRect rect = [self firstRectForCharacterRange:aRange];
rect = [self convertRectToLayer:rect];
rect.origin = [currentScreen flipPoint:rect.origin];
rect = [self.window convertRectToScreen:rect];
return rect;
}
Run Code Online (Sandbox Code Playgroud)
...并放置叠加层:
- (void)focusOnLine
{
NSInteger caretLocation = [aTextView selectedRange].location;
NSRange neededRange;
(void)[layoutMgr lineFragmentRectForGlyphAtIndex:caretLocation effectiveRange:&neededRange];
CALayer *aLayer = [CALayer layer];
[aLayer setFrame:NSRectToCGRect([aTextView overlayRectForRange:neededRange])];
[aLayer setBackgroundColor:[[NSColor redColor] coreGraphicsColorWithAlfa:0.5]];
[[aTextView layer] addSublayer:aLayer];
}
Run Code Online (Sandbox Code Playgroud)
结果,选择叠加与所需线的宽度一致,但绝对不与Y轴匹配(X轴是正常的).
我错过了什么?
cocoa ×3
calayer ×2
nstextview ×2
appkit ×1
itunes ×1
macos ×1
nsscrollview ×1
nssplitview ×1
objective-c ×1
steam ×1
swift ×1
xcode4 ×1