【问题标题】:How to correctly set background for retina?如何正确设置视网膜的背景?
【发布时间】:2013-06-13 17:17:51
【问题描述】:

这个问题可能是初级的,但我有一个 setBackgroundColor 的错误。

我有包含UITableViewUIViewUITableView 是 clearColored。我正在尝试在UIView 上设置背景:

[self.viewForTable setBackgroundColor: [UIColor colorWithPatternImage:[UIImage imageNamed:@"bgIngrList.png"]]];

在普通 iPad 上看起来像:

但在视网膜 iPad 上(如第二张图片开始显示):

我有两个图像“bgIngrList.png”和“bgIngrList@2x.png”,分别为 290x260580x520

错误可能在哪里?

编辑

我已经通过使用UIImageView 而不是UIView 解决了这个问题。

谢谢大家!!!

【问题讨论】:

  • 抱歉,我不清楚第二张图片有什么问题。背景是否真的画得太大了,还是只是视网膜模拟器的更大屏幕截图? bgIngrList.pngbgIngrList@2x.png 都在您的项目中吗?
  • 看第二张图的底部,看起来像第二次背景画图
  • 我现在看到了……很奇怪。我不确定发生了什么,但我的第一个猜测是,仅查看屏幕截图,another 视图(带有圆角)正在绘制在底部区域的顶部。您可以使用[[UIWindow keyWindow] recursiveDescription] 记录整个视图层次结构。也许试试看,看看是否有任何可疑的东西出现。

标签: ios uiview


【解决方案1】:

colorWithPatternImage:(顾名思义)将您的图像视为要填充的图案。因此,如果您提供的图像小于视图的大小,它将再次绘制图案图像而不是拉伸它。这就是这里发生的事情。您的图像大小小于视图大小,因此它在底部再次绘制图像。您可以通过添加 UIImageView 并设置图像属性而不是设置 UIView 的 backgroundColor 来避免这种情况。

【讨论】:

  • 啊哈,这是正确的答案。我没有足够注意源图像的大小,并认为源图像是绿色纹理背景的图块,而不是整个背景的图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
  • 2014-07-27
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多