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 图形上下文的主要内容,如果未能解决你的问题,请参考以下文章

ni是啥软件

`*.ni.dll.aux` 文件的格式是啥?

ni vision assistant的例子在哪

使用Visual Studio deploy NI FPGA板卡(采用FPGA Interface C API Generator)

Cocoa 中的共享对象

Cocoa swift macOS 打印 html 到 pdf