- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在空白的 UIViewController 中,我通过以下方式更改屏幕颜色:
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blackPattern.png"]];
然后我用我的 iPhone 5 截屏。图像如下所示:
如果您以 100% 的比例查看图像,您将看到三个条(顶部、左侧和底部)。然而,我的图案图像非常简单(blackPattern@2x.png):
它是用于视网膜显示的 8x8 png。
具有讽刺意味的是,当应用程序在模拟器上运行时,这些栏是不可见的。它是 iPhone 5 硬件特定的症状吗?
附注如果你想看到它运行,你可以下载我的应用程序:here
最佳答案
很有趣。我可以在 iPhone 5 上重现该问题(不是在模拟器上,甚至不是在视网膜模式下)。
一些想法和观察:小图案图像中的颜色完全是黑色和白色(0 和 255,每个 r、b 和 g)。在全屏图像中它不是。中间是 8 和 247,底部是 12,243,边上是 4,251。
这看起来很像插值伪像:当 Core Graphics 将图像中的像素绘制到设备像素上并且像素不完全匹配时,它会计算来自相邻源像素的插值颜色。黑色和白色会导致深灰色和亮灰色:我们在这种情况下看到的效果。
我仍然不知道为什么这只发生在设备上。
稍微研究一下这个问题,我没有找到原因,而是找到了解决问题的方法:自己创建棋盘图案颜色:
static void patternDrawPatternCallback(void *info, CGContextRef c)
{
for (int y = 0; y < 8; ++y) {
for (int x = 0; x < 8; ++x) {
CGFloat v = (x + y) & 1;
CGContextSetRGBFillColor(c, v, v, v, 1);
CGContextFillRect(c, (CGRect){{x, y}, {1, 1}});
}
}
}
static void patternReleaseInfoCallback(void *info)
{
}
static UIColor *checkerColor()
{
CGPatternCallbacks callbacks = {
.drawPattern = patternDrawPatternCallback,
.releaseInfo = patternReleaseInfoCallback,
};
CGFloat scale = 1.0f / [UIScreen mainScreen].scale;
CGPatternRef pattern = CGPatternCreate(NULL,
(CGRect){.size={8, 8}},
CGAffineTransformMakeScale(scale, scale),
8, 8,
kCGPatternTilingConstantSpacing,
YES,
&callbacks);
CGFloat components[] = {1, 1, 1, 1};
CGColorSpaceRef colorspace = CGColorSpaceCreatePattern(NULL);
CGColorRef color = CGColorCreateWithPattern(colorspace, pattern, components);
CGColorSpaceRelease(colorspace);
CGPatternRelease(pattern);
UIColor *checkerColor = [UIColor colorWithCGColor:color];
CGColorRelease(color);
return checkerColor;
}
使用此代码中的颜色我无法重现该问题(即使我使用了图案拼贴并将拼贴的大小设置为略有偏差)。
关于iphone - iPhone 5 硬件上的奇怪 colorWithPatternImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14768331/
我有一个图案图像(底部有阴影的红色纹理)。当我使用这段代码时 view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageN
我对 colorWithPatternImage 有一些问题。 图像在视网膜屏幕上展开,我环顾四周,找不到适合我的解决方案。 这是我所拥有的: tblView.backgroundColor = [U
我用我的图案制作的背景有点问题。我想用图案 (75x75) 制作背景,如果我使用该方法 self.myView.backgroundColor=[[UIColor alloc] initWithPat
我试图为 tableviewcell 的不同 backgroundColor 提供 colorwithPatternImage ,但它没有按预期工作。该文档没有提到一次只能使用一种模式。 假设我有 3
我正在尝试创建一个带有自定义文本的 UILabel 来显示游戏的当前分数。客户给了我一些屏幕截图,他们希望文本的颜色/图案看起来像木板的颜色/图案,因此它看起来呈褐色,内部有较深的漩涡。 这可能吗?我
我准备了一张透明的图片,像这样: 对于两个 UIview,我这样配置背景颜色: self.view.backgroundColor = [UIColor groupTableViewBackgroun
您好,我想同时实现圆角和由平铺一个小 png 组成的背景(OPERATOR_VIEW_BACKGROUND_IMAGE)。我的主要目标是允许设计人员通过在项目资源中插入正确的图像来填充 View 的背
如果可以,图像可以动画吗? 有充分的理由不这样做吗?内存使用情况等? 最佳答案 是的,标签可以有图案颜色。 alt text http://img178.imageshack.us/img178/19
我们有没有办法像 SKSpriteNode 那样在一个区域内重复图像? SKColor colorWithPatternImage不幸的是不起作用。 编辑: 我做了以下类别,到目前为止似乎有效。使用
我想比较使用 [UIColor colorWithPatternImage:] 生成的两个 UIColor 是否相等。我似乎不知道该怎么做。 [[UIColor colorWithPatternIma
我正在使用 colorWithPatternImage 更改 UITextView 的文本颜色。它在 IO7 中工作正常但在 IO6 中不工作。 这是我的代码:- text.textColor = [
我有 UIView,backgroundColor 设置为 colorWithPatternImage。正如预期的那样,背景图像是从上左角开始绘制的。 当我在该 View 上执行 renderInCo
我正在使用 [UIColor colorWithPatternImage:] 为我的分组 UITableViewCell 设置背景图像。我的单元格有免费的圆角,一切看起来都很棒,直到我尝试给单元格一个
如果我只是想为 UIView 使用背景图片,哪个更好?我可以使用任何一种方法来完成此操作,但哪种方法效率更高?我的直觉是,使用 UIView 和 colorWithPaternImage 比使用 UI
在空白的 UIViewController 中,我通过以下方式更改屏幕颜色: self.view.backgroundColor = [UIColor colorWithPatternImage:[U
我的问题是,是否可以让 UIView 显示图像,如果可以,我该怎么做?我所能找到的只是不再适用于 swift 的 colorwithpatternImage。 我现在尝试使用的代码是: self.vi
有没有办法获取在 UIColor 类别中设置背景颜色的对象的边界? 例如,我尝试从图像应用 UIColor,但我希望它相应地拉伸(stretch)。关联的引用文献会完成这项工作吗?或者最好在 UIVi
我正在使用 UIColor 的 colorWithPatternImage 函数在我的一个 View 上设置平铺图像。结果是一个由 1 像素线组成的网格。 图:线条清晰的颜色网格是问题所在。 我的目的
我有一个 UIImageView,它使用以下代码进行动画处理: NSMutableArray *imageArray = [[NSMutableArray alloc] init];
我有一个传递给我的 UIColor。我需要检测它是纯色(例如,使用 colorWithRed:green:blue:alpha: 创建)还是使用 colorWithPatternImage 创建的颜色
我是一名优秀的程序员,十分优秀!