从UIImageView获取上下文

时间:2009-11-17 00:03:12

标签: iphone uiimageview

我可以从exists CGContextRef获取上下文(UIImageView)吗?

详细信息:我有一个指向xib文件的控制器链接。在IB中,我添加了一个UIImageView并引用它:

IBOutlet UIImageView *imageView;

现在,在viewDidLoad如何获取UIImageView上下文(CGContextRef)?

在此之前,如果我使用:

CGContextRef context = UIGraphicsGetCurrentContext();

输出:

<Error>: CGContextTranslateCTM: invalid context

提示?

2 个答案:

答案 0 :(得分:3)

如果你想使用自己的绘图方法,你应该在UIView的drawRect:方法中应用它们。您需要创建自己的绘图逻辑子类UIView:在XCode中使用File-&gt; New File并选择UIView作为模板,它将为您提供基本框架。在Interface-Builder中,您可以先添加一个新视图,然后使用“检查器”窗口中“标识”选项卡下的类进行设置。

然后该方法应该以这样的方式开始,以便为您提供对上下文的引用:

- (void)drawRect:(CGRect)fr {
    CGContextRef context = UIGraphicsGetCurrentContext();
    ... DRAWING CODE ...
}

首次显示视图时会自动调用此方法。如果你的逻辑依赖于某些变量,你应该在UIView上调用setNeedsDisplay让视图重新运行绘图逻辑。

但是,这不适用于UIImageViewLINK):

  

子类注释

     

特别注意事项

     

优化UIImageView类以将其图像绘制到显示器。 UIImageView不会调用drawRect:一个子类。如果您的子类需要自定义绘图代码,建议您使用UIView作为基类。

答案 1 :(得分:2)

添加对UIGraphicsBeginImageContext的调用(self.frame.size);在UIGraphicsGetCurrentContext()之前;  它会起作用。

 UIGraphicsBeginImageContext(self.frame.size); 
 CGContextRef context = UIGraphicsGetCurrentContext();