Cocoa touch/Xcode - 生成 NIB-less 图形上下文
Posted
技术标签:
【中文标题】Cocoa touch/Xcode - 生成 NIB-less 图形上下文【英文标题】:Cocoa touch/Xcode - generating NIB-less graphics context 【发布时间】:2010-10-25 16:17:48 【问题描述】:我的应用委托包含:
- (void)applicationDidFinishLaunching:(UIApplication *)application
// Override point for customization after app launch
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
if (!window)
[self release];
return;
window.backgroundColor = [UIColor greenColor];
[window addSubview:viewController.view];
[window makeKeyAndVisible];
[window layoutSubviews];
这确实被执行了,显然没有错误。窗口变量不是0
,因此测试if (! window)
不会导致函数返回。但是没有出现绿色背景窗口,只有默认颜色。在 appController.m 文件中, viewDidLoad 方法中的代码会执行。但是 CGContextRef context = UIGraphicsGetCurrentContext();
返回 null 而不是真实的上下文。
我遗漏了什么?
【问题讨论】:
对不起,我没有更好地格式化代码 - 我在这里的第一篇文章。 没问题 - 我已经修复了格式。为了将来参考,您需要将每个代码行缩进至少 4 个空格(不是制表符)。内联代码可以用反引号 (`) 括起来以使其成为等宽。 【参考方案1】:我怀疑您的窗口不是绿色的,因为您使用 [window addSubview:viewController.view];
添加的视图是不透明的并覆盖了整个窗口。
关于另一个问题,如果您在viewDidLoad
中询问当前的图形上下文,我认为不能保证有一个。您只能通过继承和覆盖 drawRect:(CGRect)
方法来利用 UIViews
。如果你想在这些之外绘制,你需要通过CGBitmapContextCreate
之类的东西创建自己的图形上下文,然后通过在视图的drawRect:
中绘制它们或通过找到另一个将采用@987654328 的控件来显示结果@您使用位图函数制作的(即UIImage
)。
【讨论】:
谢谢。我注释掉了 addSubview,然后屏幕仍然显示为默认颜色,但是当我停止模拟器时,我的背景颜色在它全部消失之前显示 - 我更改了颜色以验证这一点。所以你显然是正确的,但其他事情也在发生。 如果我必须继承一个 UIView 来覆盖它的 drawRect,这是否意味着任何直接实例化的 UIView 都没有用,因为它没有覆盖 drawRect?可能我没有得到任何东西 - 如何绘制在 Interface Builder 中创建的视图? 确实,没有子类化的 UIViews 几乎没有行为——它们只是绘制白色方块。您可以使用身份检查器的“类”部分将使用 Interface Builder 创建的 UIView 设置为您想要的任何 UIView 子类的实例。以上是关于Cocoa touch/Xcode - 生成 NIB-less 图形上下文的主要内容,如果未能解决你的问题,请参考以下文章
使用Visual Studio deploy NI FPGA板卡(采用FPGA Interface C API Generator)