iOS как затемнить UITabBar и UINavigationController, не скрывая их? - PullRequest
1 голос
/ 06 декабря 2011

Я пытаюсь уменьшить яркость своего приложения ночью, и, хотя у меня довольно хороший контроль над моим UIView, UITabBar и UINavigationController доставляют мне проблемы.

Как я могу затемнить UITabBar и UINavigationController их, не скрывая их?

Ответы [ 4 ]

7 голосов
/ 06 декабря 2011

Для UITabBar вы можете сделать:

tabBar.alpha = 0.5

UINavigationController - это не представление, это контроллер, поэтому не имеет смысла, когда вы говорите, что хотите уменьшить его.Если вы имели в виду, что хотите уменьшить яркость UINavigationBar, вы можете сделать:

navigationController.navigationBar.alpha = 0.5;

Или, если вы хотите затемнить все в навигационном контроллере:

navigationController.view.alpha = 0.5;
2 голосов
/ 06 декабря 2011

Я бы создал подкласс UIView, который обеспечивает чистый черный вид.Затем вам нужно будет передать сенсорные события через представление, поэтому вам нужно будет переопределить -pointInside:withEvent:, вернуть NO и передать сообщение в суперпредставление.Вставьте этот вид как подпредставление вида, который вы пытаетесь затемнить.Используйте свойство alpha для управления эффектом затемнения.

Редактировать Мне скучно.Вот кое-что, что я только что скинул.

IADimmingView.h

#import <UIKit/UIKit.h>

@interface IADimmingView : UIView

- (id)initWithContainingView:(UIView *)view;
- (void)dim;

@end

IADimmingView.m

#import "IADimmingView.h"

@interface IADimmingView ()

@property (strong, nonatomic) UIView *containingView;

@end

#pragma mark -

@implementation IADimmingView

@synthesize containingView;

- (id)initWithContainingView:(UIView *)view
{
    NSParameterAssert(view);

    self = [super initWithFrame:view.frame];

    if (!self)
        return nil;

    containingView = view;
    self.backgroundColor = [UIColor blackColor];

    return self;
}

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    [self.containingView pointInside:point withEvent:event];

    return NO;
}

- (void)dim
{
    [self.containingView addSubview:self];
}

@end

Вваш контроллер представления, он используется так ...

IADimmingView *dimmingView = [[IADimmingView alloc] initWithContainingView:self.tabBarController.tabBar];
dimmingView.alpha = 0.75;
[dimmingView dim];
1 голос
/ 06 декабря 2011

Вы можете сделать их на заказ.Здесь много раз спрашивали, например: Пользовательские цвета в UITabBar

Просто сделайте то же самое с панелью навигации.

0 голосов
/ 17 марта 2014

Вот как navigationBar объявляется в документации :

Панель навигации, управляемая контроллером навигации. (только для чтения)

Разрешено настраивать внешний вид панели навигации с использованием методов и свойств класса UINavigationBar, но вы никогда не должны изменять его рамку, границы,или альфа значения или изменить его иерархию представления напрямую.Чтобы показать или скрыть панель навигации, вы всегда должны делать это через контроллер навигации, изменяя его свойство navigationBarHidden или вызывая setNavigationBarHidden: animated: method.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...