Objective c Cocoa touch/Xcode-生成无笔尖的图形上下文

Objective c Cocoa touch/Xcode-生成无笔尖的图形上下文,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,我的应用程序委托包含: - (void)applicationDidFinishLaunching:(UIApplication *)application { // Override point for customization after app launch window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; if (!window) { [self rele

我的应用程序委托包含:

- (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而不是实际上下文


我漏掉了什么?

我怀疑您的窗口不是绿色的,因为您正在添加的视图是
[window addSubview:viewController.view]不透明,覆盖整个窗口


至于另一个问题,如果您在
viewdiload
中询问当前的图形上下文,我认为不一定会有。您只能通过子类化和重写
drawRect:(CGRect)
方法,在
UIViews
上绘制。如果要在这些外部绘制,则需要通过以下方式创建自己的图形上下文,然后通过在视图的
drawRect:
中绘制结果,或者通过查找另一个控件来显示结果,该控件将使用位图函数(即
UIImage
)生成的
CGImage
).

很抱歉,我没有更好地格式化代码-我在这里的第一篇文章。没问题-我已经修复了格式。为了便于将来参考,您需要使用至少4个空格(不是制表符)缩进每个代码行。内联代码可以用倒钩(`)包围,使之成为单空格。谢谢。我注释掉了addSubview,然后屏幕仍然显示默认颜色,但是当我停止模拟器时,我的背景颜色显示在它关闭之前-我更改了颜色以验证这一点。所以你显然是对的,但还有一些事情正在发生。如果我必须对UIView进行子类化以覆盖其drawRect,这难道不意味着任何直接实例化的UIView都是无用的,因为它没有覆盖drawRect吗?也许我没有得到什么东西——在Interface Builder中创建的视图如何绘制?事实上,没有子类化的UIView几乎没有行为——它们只绘制白色正方形。您可以使用Identity inspector的“类”部分将使用Interface Builder创建的UIView设置为所需UIView子类的实例。