回答

7

對於UITabBar你可以○:

tabBar.alpha = 0.5 

一個UINavigationController是不是認爲,這是一個控制器,因此,當你說你想有啥用呢它是沒有意義的。如果你的意思是要調暗UINavigationBar的,你可以這樣做:

navigationController.navigationBar.alpha = 0.5; 

或者,如果你想在暗淡的navigationController一切:

navigationController.view.alpha = 0.5; 
+0

根據您的情況,這將是很容易製作動畫使用此方法黯淡。 – brandonbocklund

+0

這當然取決於相關視圖下方的顏色。最有可能的是窗戶的顏色,但不一致。 –

2

我會創建一個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

你可以讓他們的定製。這在這裏被問了很多次,例如:Custom colors in UITabBar

只要在導航欄上做同樣的事情。

+0

這是過時的材料。外觀API雖然是個好主意。 –

+0

你說得對,有問題,但有時候起訴人不能做我們建議他們的事情。無論如何。所以,在這種情況下,他們需要另一種選擇。這只是一個,這對我來說只有一次。 – SentineL

0

這是navigationBar如何在documentation聲明:

由導航控制器管理的導航欄。 (只讀)

它是允許使用UINavigationBar的類的方法和屬性來定義所述導航欄的外觀,但必須永遠不會改變它的幀,邊界,或α值或修改它的視圖直接層級。要顯示或隱藏導航欄,您應該始終通過導航控制器更改其navigationBarHidden屬性或調用setNavigationBarHidden:animated:方法來完成此操作。

這是我用來解決這個問題的答案:Visible buttons with transparent navigation bar