我有
UIView *topPart = [[UIView alloc] initWithFrame:CGRectMake(9, 0, 302, 318)];
topPart.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"pattern.png"]];
[someScroller addSubview:topPart];
[topPart release];
当我使用3gs或iphone模拟器时,我可以看到模式很好,但是当我在实际的iPhone 4上测试时,我看到了模式图像,但是每个模式都有黑色线条,所以它看起来像一个网格。我检查了图案图像,没有黑色边框或任何东西。
有人有不同的问题,但它可能是相同的解决方案 colorWithPatternImage with iPhone 4 Retina Display (image@2x.png)
但他们建议使用 - (void)drawRect:方法,唯一的问题是我不知道该怎么做。
由于
答案 0 :(得分:2)
我遇到了同样的问题,发现这是因为我的png是灰度(不是RGB)
要检查是否是这种情况,只需在Xcode中选择图像,显示Utilities侧边栏(右侧显示的侧边栏)并查看色彩空间。
要解决此问题,您可以使用自己喜欢的图像编辑器,但对于photoshop,请执行以下操作: 打开灰度图像 全选并复制 创建一个新文档(但这次确保颜色空间是RGB) 糊
希望有所帮助:)
答案 1 :(得分:1)
我通过结合这两个帖子的答案来解决这个问题 https://devforums.apple.com/message/259150#259150
How can I use CGContextDrawTiledImage to tile an image?
UIImage *thePattern= [self GetFineTiles:[UIImage imageNamed:@"Feedbackpattern.png"]];
theView.backgroundColor = [UIColor colorWithPatternImage:thePattern];
-(UIImage*)GetFineTiles:(UIImage*)badImage{
UIGraphicsBeginImageContext(badImage.size);
CGContextRef imageContext = UIGraphicsGetCurrentContext();
CGContextDrawTiledImage(imageContext, (CGRect){CGPointZero,badImage.size}, badImage.CGImage);
UIImage *goodPattern = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return goodPattern;
}
希望这有助于其他人