Ответ 1
Проверьте возможные ключи UIKit для Info.plist, в частности UIViewGroupOpacity
.
UIViewGroupOpacity (Boolean - iOS) указывает, будет ли Core Animation подслои наследуют непрозрачность своего суперслоя.
В моем примере у меня есть 3 вида: один красный вид, содержащий два белых изображения. Я изменяю альфа-представление красного контейнера до 0,3, и это происходит (посмотрите на изображение, текущий результат).
Увидев это, я могу только предположить (скажите, если я ошибаюсь), что установка альфа-представления также установит все его альфа-объекты subviews. Мой вопрос: есть способ просто сказать красное представление действовать как целое, так что установка его альфы даст что-то похожее на желаемый результат (на изображении)?
Вот как это выглядит без альфы:
Проверьте возможные ключи UIKit для Info.plist, в частности UIViewGroupOpacity
.
UIViewGroupOpacity (Boolean - iOS) указывает, будет ли Core Animation подслои наследуют непрозрачность своего суперслоя.
Чтобы уточнить ответ Марка: если вы установите UIViewGroupOpacity
в Info.plist, это изменит поведение для всех просмотров в вашем приложении, если вы заинтересованы только в фиксации рендеринга этого конкретного вида, вы также можете используйте этот фрагмент:
redContainerView.layer.shouldRasterize = YES;
// No setting rasterizationScale, will cause blurry images on retina.
redContainerView.layer.rasterizationScale = [[UIScreen mainScreen] scale];
Альфа-свойство iOS наследуется его подпредставлениями. Если мы установим альфа 0.3 для красного вида, то оба подпредставления будут иметь альфа = 0.3. Нет способа остановить подпредставление, чтобы наследовать альфа-значение от его суперпредставления.
Решением может быть установка цвета красного вида с альфа-значением 0,3. Свойство color не будет зависеть от его подпредставления.
[redView setBackgroundColor:[UIColor colorWithHue:238.0f/255.0f saturation:24.0f/255.0f brightness:24.0f/255.0f alpha:0.3]];