У меня несколько необычная проблема. В моем приложении я затеню UIImageView
, используя базовое затенение слоя Quartz2d. Вот мой код:
imageView.layer.shadowOpacity = 1.0; // Pretty self explanatory
imageView.layer.shadowRadius = 8.0; // My softness
imageView.layer.shadowColor = [UIColor blackColor].CGColor; // Color of the shadow
imageView.layer.shadowOffset = CGSizeMake(0.0, 0.0); // Offset of the shadow
Это создает хорошее размытие за изображением. Однако я делаю некоторую анимацию с этим видом, и постоянный пересчет затенения во время переходов вызывает очень изменчивый переход. То, что я хотел бы сделать, это создать файл UIImage или .png из представления изображения с размытием и его альфа-неповрежденным . Вот что я уже пробовал:
UIGraphicsBeginImageContext(CGSizeMake(320, 396));
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
Поскольку у меня есть тень, которая "выходит за пределы" вида изображения, я не могу просто передать его размер в функции UIGraphicsBeginImageContext
. Я установил правильный размер, но полученное изображение не сохраняет мою альфу, вместо этого он помещает белый фон позади тени, что не будет работать для меня, потому что мой реальный фон - текстура дерева. Кроме того, представление не центрируется в результирующем файле.
Я неплохо справляюсь с UIKit
, но я настоящий нуби с Quartz
2d графикой, так что, если есть очевидный ответ, отправьте его в любом случае. :)