Подтвердить что ты не робот

Прозрачная прозрачность в 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

4b9b3361

Ответ 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

Это не похоже на магическое соотношение для применения к предыдущему цвету для получения нового.

В любом случае, я фактически отклонил бинарный файл, который был одобрен сегодня днем, и повторно представил эти новые значения, чтобы пользователь не получал уродливое приложение:)

Надеюсь, что это поможет.