2013-12-07 2 views
6

У меня есть трудности с объединением barTintColor UINavigationBar между iPhone 5 и 5S. Оба моих телефона находятся на iOS 7. На следующем скриншоте верхняя часть - 5S, а нижняя - 5. iPhone 5S демонстрирует чрезвычайно прозрачный эффект, в то время как iPhone 5 показывает гораздо более тонкий эффект. Только очень темные объекты видны за навигационной панели для iPhone 5.Как консолидировать прозрачность панели навигации между iPhone 5S и 5?

[[UINavigationBar appearanceWhenContainedIn:[UINavigationController class], nil] 
    setBarTintColor:[UIColor 
     colorWithRed:46.0/255.0 
     green:160.0/255.0 
     blue:152.0/255.0 
     alpha:0.8 
    ] 
]; 

enter image description here

Я предпочел бы, чтобы оба телефона выглядеть iPhone 5. Если бы я увеличить альфу barTintColor до 1,0 , панель навигации iPhone 5 станет полностью непрозрачной. Это ожидаемый результат. Хотя панель iPhone 5S станет менее прозрачной, эффект все еще слишком силен. Как бы я мог уменьшить прозрачность еще больше, не делая ее полностью непрозрачной?

+1

Оба устройства работают под управлением iOS7, но работают ли они на той же версии iOS7? Изменения были внесены в iOS 7.0.3, и дальнейшие изменения были внесены в iOS 7.1 beta 1. –

+0

5S находится на 7.0.2. 5 - на iOS 7.0.4. Сейчас я обновлю 5S и посмотрю, не изменилось ли это. – Pwner

+0

Обновление 5S будет иметь значение. –

ответ

4

Как обсуждалось в комментариях, вы видите разные варианты поведения, потому что одно из устройств использует устаревшую версию iOS 7. Apple изменила версию 7.0.3 на то, как обрабатывается цвет оттенка штриха, и теперь учитывается значение альфа. Вы должны сосредоточиться на новой версии iOS.

+0

Да, это была проблема. В iOS 7.0.4 соблюдается альфа-значение. Очень жаль, что все будут рассматривать мое приложение по-разному. – Pwner

+4

Чтобы добавить соль к травме, Apple снова изменила алгоритм в бета-версии iOS 7.1. Я предлагаю вам обновить одно из ваших устройств разработки и скомпилировать с помощью 7.1 SDK, чтобы узнать, хорошо ли там выглядит ваше приложение. –

+0

Подтверждено. Он снова изменяется в 7.1. Какой позор, так что в основном лишь немногие пользователи, которые остались на 7.0.3 - 7.0.6, имеют альфа-значение «работает». – czaku

3

Если вы все еще хотите установить альфа для своей панели навигации в IOS 7.1, я нашел обходное решение для этого. Создание изображения из цвета с альфа-набором для него, а затем присвоить это изображение в качестве фона для панели навигации:

1- здесь является способом создания изображения с цвета:

-(UIImage *)imageWithColor:(UIColor *)color { 
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); 

    UIGraphicsBeginImageContext(rect.size); 

    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetFillColorWithColor(context, [color CGColor]); 
    CGContextFillRect(context, rect); 

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return image; 
} 

я нашел это по адресу: Creating a UIImage from a UIColor to use as a background image for UIButton

//create a colour and set its alpha: 

UIColor *colorWithAlpha = [UIColor colorWithRed:(80/255.f) green:(146/255.f) blue:(84/255.f) alpha:0.2]; // light red colour 

// create your background image: 
UIImage *backgroundImage = [self imageWithColor: colorWithAlpha]; 

//set this image as a background image:  
[self.navigationController.navigationBar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault]; 

self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init]; // to remove shadow