我的应用程序在iPhone 6.1模拟器上崩溃了.它在启动时崩溃,但不是每次都崩溃.事实上,我不能让它连续两次崩溃.有时它是我每次跑步的时候,有时候每次击中跑步都是这样.崩溃是一个SIGABRT并且不会产生任何错误消息.我在所有异常上设置了断点,但它总是在main.m中的UIApplicationMain(...)处断开
回溯产生:
* thread #1: tid = 0x1c03, 0x91398a6a libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGABRT
frame #0: 0x91398a6a libsystem_kernel.dylib`__pthread_kill + 10
frame #1: 0x95c31b2f libsystem_c.dylib`pthread_kill + 101
frame #2: 0x023e857b libsystem_sim_c.dylib`abort + 140
frame #3: 0x02d92b4e GraphicsServices`GSRegisterPurpleNamedPort + 348
frame #4: 0x02d9269f GraphicsServices`_GSEventInitialize + 123
frame #5: 0x02d92c1f GraphicsServices`GSEventInitialize + 36
frame #6: 0x00ee0d99 UIKit`UIApplicationMain + 600
frame #7: 0x0000277d MyApp`main(argc=1, argv=0xbffff388) + 141 at main.m:16
Run Code Online (Sandbox Code Playgroud)
该应用程序似乎没有在设备上崩溃,但这是非常烦人的,刚刚开始.我已经尝试重置内容,重新启动Xcode,重新启动计算机 - 没有运气.我有什么想法可以调试这个吗?
如何更改NSMenuItem的高度?当我更改菜单的字体时,NSMenuItem会自动调整大小以适合标题,在标题的上方或下方不留空格.它看起来非常狭窄.
看起来像这样:
希望它看起来像这样:
我已经尝试了与菜单项的属性标题相关的百万次调整,但无济于事.我也不想使用菜单项的view属性,因为我想保持高亮显示.还有其他想法吗?
编辑:这是我想要的(或多或少),但基于NSMenu,而不是从头开始重做.
我只是改写了我的游戏以使用核心动画来努力使其更快.我有一个UIView,其中包含许多子图层(游戏"图块").tile子层实际上是CALayer子类,它们使用绘制自己的内容drawInContext:
.例如,当选择一个磁贴时,需要重新绘制它,所以我调用[tileLayer setNeedsDisplay]
并得到一堆无效的上下文错误.如果我打电话[mainView setNeedsDisplay]
或[mainView.layer setNeedsDisplay]
,没有任何瓷砖重绘.如何才能重新绘制单个图块(CALayer子类)?
编辑:从非常有用的评论,我能够弄清楚这只发生在CALayer子类绘制图像时.以下是错误:
<Error>: CGContextSaveGState: invalid context 0x0
<Error>: CGContextSetBlendMode: invalid context 0x0
<Error>: CGContextSetAlpha: invalid context 0x0
<Error>: CGContextTranslateCTM: invalid context 0x0
<Error>: CGContextScaleCTM: invalid context 0x0
<Error>: CGContextDrawImage: invalid context 0x0
<Error>: CGContextRestoreGState: invalid context 0x0
Run Code Online (Sandbox Code Playgroud)
以下是导致错误的代码行:
[[UIImage imageNamed:@"flag.png"] drawInRect:self.bounds];
Run Code Online (Sandbox Code Playgroud)
我还有另一种方法是在CALayer子类中绘制图像吗?
我正在尝试自定义我的应用程序的 UI,我希望我的 NSTableView 有圆角。所以我继承了 NSTableView 并得到了这个:
但是,当我填充表格并选择一行时,选择是在边框上绘制的,如下所示:
我试过在表格视图绘图代码中添加一个剪辑,但它不起作用。有关如何解决此问题的任何建议?
编辑:
我在 NSTableView 中的绘图代码如下:
- (void)drawRect:(NSRect)dirtyRect {
[NSGraphicsContext saveGraphicsState];
NSRect frame = NSMakeRect(0.0, 0.0, [self bounds].size.width, [self bounds].size.height-1.0);
[[NSBezierPath bezierPathWithRoundedRect:frame xRadius:3.6 yRadius:3.6] addClip];
[super drawRect:dirtyRect];
[NSGraphicsContext restoreGraphicsState];
}
Run Code Online (Sandbox Code Playgroud)
实际的圆形框架是在 NSScrollView drawRect 方法中绘制的。有趣的是,这确实剪辑了第一行和最后一行的选择:
但不是在表格滚动时:
所以问题仍然存在:如何在 NSScrollView 的圆形框架内剪辑所有绘图?
cocoa ×2
iphone ×2
calayer ×1
cocoa-touch ×1
crash ×1
ios ×1
macos ×1
nsmenu ×1
nsmenuitem ×1
nstableview ×1
objective-c ×1
sigabrt ×1
xcode ×1