iOS - маскирование с помощью colorWithPatternImage без повторения в файле.png
Я пытаюсь заполнить рисунком мою маску изображений (.png)
UIImageView *imageView = (UIImageView*)_maskView.contentView;
imageView.image = [imageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
imageView.tintColor = [UIColor colorWithPatternImage:image];
Теперь я сделал то, что хочу. Но с проблемой. Вот скриншот:
На этом скриншоте у меня есть эти слои спереди назад;
- mainImageView -> содержит изображение водопада.
- maskView -> лежит в верхней части mainImageView. Это пользовательский UIView. Он содержит imageView с именем contentView.
- contentView -> UIImageView. Подвид maskView. Содержит изображение маски. Я использую код colorWithPatternImage на его tintColor.
Как вы можете видеть, мое изображение шаблона является мозаичным (или повторяющимся, или как вы называете).
Я попытался изменить размер изображения шаблона к размеру imageView, также попытался изменить размеры к высоким разрешениям как 4000X4000 без удачи.
Пробовал что то типа
self.layer.contents = (id)[UIImage imageNamed:@"freshBackground.png"].CGImage;
но этот код заполняет весь imageView.
Сейчас у меня нет вариантов. Может ли кто-нибудь помочь мне в этом? Спасибо.
1 ответ
Я могу подтвердить, что у меня не было хорошего опыта использования colorWithPattern с большими изображениями. Он всегда был разработан для использования с маленькими изображениями. Это особенно не в состоянии загрузить 2x и 3x изображения самостоятельно. Во время моей реализации я использовал,
self.view.layer.contents = (id)[UIImage imageNamed:@"freshBackground.png"].CGImage;
Что касается применения изображения ко всему основному представлению, вы также можете рассмотреть подход, заключающийся в создании beizerPath и вычитании его из основного представления, как показано здесь, вместо использования маски.