【问题标题】:Property 'CGImage' not found on object of type 'MyClass *'在“MyClass *”类型的对象上找不到属性“CGImage”
【发布时间】:2020-07-08 22:09:10
【问题描述】:

我正在开发一个需要识别颜色和其他内容的 iOS 应用。 我得到了这个代码:

- (UIColor *)averageColor {

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char rgba[4];
CGContextRef context = CGBitmapContextCreate(rgba, 1, 1, 8, 4, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

CGContextDrawImage(context, CGRectMake(0, 0, 1, 1), self.CGImage);
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);  

if(rgba[3] > 0) {
    CGFloat alpha = ((CGFloat)rgba[3])/255.0;
    CGFloat multiplier = alpha/255.0;
    return [UIColor colorWithRed:((CGFloat)rgba[0])*multiplier
                           green:((CGFloat)rgba[1])*multiplier
                            blue:((CGFloat)rgba[2])*multiplier
                           alpha:alpha];
}
else {
    return [UIColor colorWithRed:((CGFloat)rgba[0])/255.0
                           green:((CGFloat)rgba[1])/255.0
                            blue:((CGFloat)rgba[2])/255.0
                           alpha:((CGFloat)rgba[3])/255.0];
}
}

来自这个人:Link

这是 99% 的完美,除了这一行:

    CGContextDrawImage(context, CGRectMake(0, 0, 1, 1), self.CGImage);

我收到以下错误消息:

Property 'CGImage' not found on object of type 'MyClass *'

据我所知,CGImage 是CoreImage 框架的一部分,该框架已正确添加到项目中,并且(我相信如此)已正确导入到类中。查看我的导入。

#import "MyClass.h"
#import "TiUtils.h"
#import "TiViewProxy.h"
#import <TitaniumKit/TiBlob.h>
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
#import <CoreImage/CIImage.h>

请问,怎么了?我该怎么做才能让错误消失? 提前致谢!

【问题讨论】:

  • CG是CoreGraphics的前缀。
  • 感谢您的回复。我导入了 #import &lt;CoreGraphics/CGImage.h&gt; ,但错误仍然存​​在。

标签: objective-c xcode core-image


【解决方案1】:

代码(很可能)是UIImage 上的一个类别(在 Swift 命名法中为“扩展”)。

从技术上讲,它适用于任何响应选择器 CGImage 的东西。

完整的声明应该是这样的:

UIImage + ColorHelp.h

@interface UIImage (ColorHelp)

- (UIColor *)averageColor;

@end 

UIImage + ColorHelp.m

@implementation UIImage (ColorHelp)

- (UIColor *)averageColor {
   //stuff
}

@end 

在 Xcode 中创建一个新的“Objective-C 文件”以在UIImage 上创建一个模板类别。

从那里UIImage 的所有实例将响应平均颜色。例如

UIImage *myImage = <something>;
UIColor *averageColor = [myImage averageColor];

【讨论】:

  • 感谢您的回复!所以,我必须创建模板,然后在 .m 文件中实现我的方法。然后我必须在其他类上使用它来创建对它的对象引用?对吗?
  • 如果您按照描述实现代码 anyUIImage 实例将回复averageColor。我假设您在 MyClass 的某个地方引用了您要分析的 UIImage
  • 是的,没错。我在 MyClass 上使用它的一个实例,它现在运行良好。谢谢大佬!
  • 如果可以(并且想要),请为我的问题投票 =)
猜你喜欢
  • 1970-01-01
  • 2014-04-27
  • 2012-03-04
  • 1970-01-01
  • 2023-03-22
  • 2019-06-25
  • 2021-06-30
  • 2012-07-31
相关资源
最近更新 更多