小编Akk*_*kki的帖子

CALayer,NSTextView和缩放

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

之前 [setWantsLayer:YES]

在此输入图像描述

[setWantsLayer:YES]

在此输入图像描述

我没有任何想法如何解决这个问题.

cocoa calayer nstextview nsscrollview

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

如何在NSSplitView中更改分隔符的颜色?

我们可以改变分频器的颜色吗?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)

不行.

cocoa appkit nssplitview xcode4

5
推荐指数
4
解决办法
3057
查看次数

Swift 和 ScriptingBridge.framework

在我的 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)

macos itunes objective-c scripting-bridge swift

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

Steam Achievements API - 如何获得成就解锁日期?

这可以在Steam Acheivements API中获得成就解锁日期吗?我已经阅读了一堆文档,但没有提到这一点.

steam-web-api steam

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

如何在NSTextView中计算所选文本的正确坐标?

我需要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 calayer nstextview

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