【问题标题】:iOS - masking with colorWithPatternImage without repeating on .png fileiOS - 使用 colorWithPatternImage 遮罩而不在 .png 文件上重复
【发布时间】:2015-02-25 21:18:05
【问题描述】:

我正在尝试用我的蒙版图像 (.png) 填充图案

UIImageView *imageView = (UIImageView*)_maskView.contentView;
imageView.image = [imageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
imageView.tintColor = [UIColor colorWithPatternImage:image];

现在我已经完成了我想做的事情。但是有个问题。这是截图:

在此屏幕截图中,我将这些图层从后向前排列;

  1. mainImageView -> 包含瀑布图像。
  2. maskView -> 位于 mainImageView 的顶部。它是一个自定义 UIView。它包含一个 名为 contentView 的 imageView。
  3. contentView -> 一个 UIImageView。 maskView 的子视图。包含 掩码图像。我在它的 tintColor 上使用 colorWithPatternImage 代码。

如你所见,我的图案图像是平铺的(或重复或任何你称之为的)。

我尝试将图案图像的大小调整为 imageView 的大小,还尝试将大小调整为 4000X4000 等高分辨率,但没有成功。

试过类似的东西

self.layer.contents = (id)[UIImage imageNamed:@"freshBackground.png"].CGImage;

但是这段代码填满了整个 imageView。

现在我别无选择。谁可以帮我这个事?谢谢。

【问题讨论】:

  • 你在哪里调用 self.layer.contents = (id)[UIImage imageNamed:@"freshBackground.png"].CGImage; ?
  • 为什么不让你的背景视图变成图像视图呢?或者,您也可以在背景视图中覆盖 drawRect 并使用 CGContextDrawImage。
  • @Vijayts 我删除 imageView.image = [imageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; imageView.tintColor = [UIColor colorWithPatternImage:image];并使用它。
  • @MikeM 你不太了解情况。平铺图像不在背景中。照片形状的蒙版是一个 .png 文件。它的照片形状的部分是透明的,其他部分是不透明的。我正在用颜色或 colorWithpatternImage 绘制它的不透明部分。所以最后我有一个形状,遮住主照片,用颜色或 colorWithpatternImage 边框。

标签: ios design-patterns uiimage masking tintcolor


【解决方案1】:

我可以确认我在使用 colorWithPattern 处理大图像时没有很好的体验。它一直被设计用于小图像。它尤其无法自行加载 2x 和 3x 图像。在我使用的实施过程中,

self.view.layer.contents = (id)[UIImage imageNamed:@"freshBackground.png"].CGImage;

关于将图像应用于整个 mainView,您还可以考虑创建 beizerPath 并从 mainView 中减去它的方法,如 here 所示,而不是使用遮罩。

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 2015-03-23
    • 2011-02-11
    • 2017-09-30
    • 2012-02-29
    • 1970-01-01
    • 2014-12-07
    • 2011-07-04
    • 2014-02-09
    相关资源
    最近更新 更多