我正在xCode5上将旧的iOS 5项目转换为iOS6.0,并且大多数警告和错误已经修复但是对于这个.有关如何重写代码以避免编译器警告的任何建议.
#define kBitsPerComponent 8
#define kBitmapInfo kCGImageAlphaPremultipliedLast
- (UIImage*)scaleToSize:(CGSize)size :(UIImage *)image
{
CGBitmapInfo bitmapInfo = kBitmapInfo;
size_t bytesPerRow = size.width * 4.0;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, size.width,
size.height, kBitsPerComponent,
bytesPerRow, colorSpace, bitmapInfo);
CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height);
CGContextDrawImage(context, rect, image.CGImage);
CGImageRef scaledImageRef = CGBitmapContextCreateImage(context);
UIImage* scaledImage = [UIImage imageWithCGImage:scaledImageRef];
CGImageRelease(scaledImageRef);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
return scaledImage;
}
Run Code Online (Sandbox Code Playgroud)
代码提供警告隐式转换从枚举类型'枚举CGImageAlphaInfo'到不同的枚举类型'CGBitmapinfo'(又名)'枚举CGBitmapInfo')
如果有人可以帮助修改代码,我将非常感激.
我需要在 Swift 中为我的游戏获取像素/点的颜色。所以我试图找到一个输入 CGPoint 并返回一个颜色的函数,到目前为止我找到的所有东西都只返回 (0,0,0,0)。我认为这是因为我在我的游戏场景类(这是一个 SKScene)中执行此操作,并且该场景仅由视图控制器加载。任何解决方案?
(如果有更好的方法来检查精灵是否接触了同样有效的颜色)
提前致谢。
我需要点击一个UIImageView...
...并将点击位置的颜色与从资产目录返回的颜色(或在代码中创建的自定义颜色)进行比较。
我在色彩空间方面遇到了很多麻烦,我的比赛总是没有。我已经阅读了一些关于 stackoverflow 的很棒的例子并尝试了它们,但我一定还是做错了什么。
我还尝试使用这样的自定义颜色(而不是资产颜色):
+ (UIColor *)themeRed {
return [UIColor colorWithRed:192.0f/255.0f green:92.0f/255.0f blue:42.0f/255.0f alpha:1];
}
Run Code Online (Sandbox Code Playgroud)
仍然没有匹配项。我的测试匹配代码如下:
-(void)tappedColorView:(UITapGestureRecognizer *)tapRecognizer {
CGPoint touchPoint = [tapRecognizer locationInView: uiiv_hs];
//NSLog(@"my color %@", [uiiv_hs colorOfPoint:touchPoint]);
UIColor *color = [uiiv_hs colorOfPoint:touchPoint];
NSLog(@"color %@",[uiiv_hs colorOfPoint:touchPoint]);
UIColor *matchcolor = [UIColor themeRed];
NSLog(@"mcolor %@",[UIColor themeRed]);
NSArray *colors = [NSArray arrayWithObjects:[UIColor colorNamed:@"Color01"],[UIColor colorNamed:@"Color02"], nil];
if ([color matchesColor:matchcolor error:nil]) {
NSLog(@"1Match!");
} else {
NSLog(@"1No Match!");
}
if ([color isEqualToColor:[UIColor …Run Code Online (Sandbox Code Playgroud) 我找到了一个Objective-C代码示例,它可以在这里得到一个像素的颜色: 如何在触摸时获得像素颜色?
我需要帮助的特定代码部分是使用CGColorSpaceCreateDeviceRGB创建上下文的地方:
---这是Objective-C代码
unsigned char pixel[4] = {0};
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(pixel,
1, 1, 8, 4, colorSpace, (CGBitmapInfo)kCGImageAlphaPremultipliedLast);
CGContextTranslateCTM(context, -point.x, -point.y);
Run Code Online (Sandbox Code Playgroud)
我最好的尝试看起来如下(我没有返回任何东西,但我正试图先正确地获取上下文):
---这是我对Swift转换的最佳尝试
func getPixelColorAtPoint()
{
let pixel = UnsafeMutablePointer<CUnsignedChar>.alloc(1)
var colorSpace:CGColorSpaceRef = CGColorSpaceCreateDeviceRGB()
let context = CGBitmapContextCreate(pixel, width: 1, height: 1, bitsPerComponent: 8, bytesPerRow: 4, space: nil, bitmapInfo: CGImageAlphaInfo.PremultipliedLast)
}
Run Code Online (Sandbox Code Playgroud)
但是这给了我一个错误
Cannot convert the expression's type '(UnsafeMutablePointer<CUnsignedChar>, width: IntegerLiteralConvertible, height: IntegerLiteralConvertible, bitsPerComponent: IntegerLiteralConvertible, bytesPerRow: IntegerLiteralConvertible, space: NilLiteralConvertible, bitmapInfo: CGImageAlphaInfo)' to type 'IntegerLiteralConvertible' …Run Code Online (Sandbox Code Playgroud) ios ×2
swift ×2
uicolor ×2
xcode ×2
cgcolorspace ×1
cgcontextref ×1
cgpoint ×1
enums ×1
object ×1
objective-c ×1
sprite-kit ×1
swift3 ×1