Прозрачная прозрачность в iOS 7.0.3
Сравните два скриншота:
Готово к симулятору iOS 7.0
![enter image description here]()
И тот, что сделан на iOS 7.0.3 iPhone 4S:
![enter image description here]()
Тот же код здесь и там и тот же материал! Любая идея, почему прозрачность отсутствует на реальном устройстве?
У меня есть этот код, чтобы имитировать его (я знаю, что это, вероятно, неудобно и не правильно, но как это):
topMenuView = [[UIView alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, 0, self.view.frame.size.width, TOP_BAR_ORIG_HEIGHT)];
topMenuView.clipsToBounds = YES;
UIToolbar *topMenuViewBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, -4, self.view.frame.size.width, TOP_BAR_ORIG_HEIGHT + 4)];
topMenuViewBar.barStyle = UIBarStyleDefault;
topMenuViewBar.barTintColor = [BSFunctions getColorFromHex:@"1ea6ff"];
const CGFloat statusBarHeight = 20;
UIView *underlayView = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, topMenuViewBar.frame.size.width, topMenuViewBar.frame.size.height + statusBarHeight)];
[underlayView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[underlayView setBackgroundColor:[BSFunctions getColorFromHex:@"1ea6ff"]];
[underlayView setAlpha:0.36f];
[topMenuViewBar insertSubview:underlayView atIndex:1];
UIView *underlayView2 = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight, topMenuViewBar.frame.size.width, topMenuViewBar.frame.size.height + statusBarHeight)];
[underlayView2 setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[underlayView2 setBackgroundColor:[BSFunctions getColorFromHex:@"0291ff"]];
[underlayView2 setAlpha:0.36f];
[topMenuViewBar insertSubview:underlayView2 atIndex:2];
[topMenuView addSubview:topMenuViewBar];
[self.view addSubview:topMenuView];
Главное, что используется для работы до на устройстве! Но после выхода iOS 7.0.3 он изменился. Я замечаю то же поведение в приложениях Facebook и Fitocracy iOS.
ОБНОВЛЕНИЕ
На Xcode 5.0.1 с симулятором iOS 7.0.3 у нас есть это (что отличается от первого изображения на симуляторе iOS 7.0, как вы можете видеть):
![enter image description here]()
Ответы
Ответ 1
Хорошо, поэтому, немного поиграв с цветами, мне удалось получить подобный вид с размытием!
Раньше я устанавливал barTintColor на внешний вид навигационной панели, который имел следующие значения:
R: 17
G: 63
Б: 95
А: 1
Это было прекрасно в iOS < 7.0.3, а цвет вывода на панели навигации (с эффектом размытия) был фактически:
R: 62
G: 89
В: 109
Так как iOS 7.0.3, barTintColor, похоже, учитывает альфа-значение установленного цвета. Это означало, что навигационная панель фактически выводила сплошной цвет 17,63,95, и не было эффекта размытия.
Ключом для получения эффекта размытия является установка альфа < 1 в barTintColor.
После многих экспериментов и тестирования разных значений RGB мне удалось получить точный RGB-выход с панели навигации (и вкладки), используя следующий RGBA:
R: 4,5
G: 61,6
Б: 98
А: 0,65
Это не похоже на магическое соотношение для применения к предыдущему цвету для получения нового.
В любом случае, я фактически отклонил бинарный файл, который был одобрен сегодня днем, и повторно представил эти новые значения, чтобы пользователь не получал уродливое приложение:)
Надеюсь, что это поможет.