我想在晚上降低我的應用程序的亮度,雖然我對UIView有很好的控制,但UITabBar
和UINavigationController
給我帶來麻煩。iOS如何隱藏UITabBar和UINavigationController而不隱藏它們?
如何在不隱藏它們的情況下將它們調暗UITabBar
和UINavigationController
?
我想在晚上降低我的應用程序的亮度,雖然我對UIView有很好的控制,但UITabBar
和UINavigationController
給我帶來麻煩。iOS如何隱藏UITabBar和UINavigationController而不隱藏它們?
如何在不隱藏它們的情況下將它們調暗UITabBar
和UINavigationController
?
對於UITabBar你可以○:
tabBar.alpha = 0.5
一個UINavigationController是不是認爲,這是一個控制器,因此,當你說你想有啥用呢它是沒有意義的。如果你的意思是要調暗UINavigationBar的,你可以這樣做:
navigationController.navigationBar.alpha = 0.5;
或者,如果你想在暗淡的navigationController一切:
navigationController.view.alpha = 0.5;
我會創建一個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];
你可以讓他們的定製。這在這裏被問了很多次,例如:Custom colors in UITabBar
只要在導航欄上做同樣的事情。
這是過時的材料。外觀API雖然是個好主意。 –
你說得對,有問題,但有時候起訴人不能做我們建議他們的事情。無論如何。所以,在這種情況下,他們需要另一種選擇。這只是一個,這對我來說只有一次。 – SentineL
這是navigationBar
如何在documentation聲明:
由導航控制器管理的導航欄。 (只讀)
它是允許使用UINavigationBar的類的方法和屬性來定義所述導航欄的外觀,但必須永遠不會改變它的幀,邊界,或α值或修改它的視圖直接層級。要顯示或隱藏導航欄,您應該始終通過導航控制器更改其navigationBarHidden屬性或調用setNavigationBarHidden:animated:方法來完成此操作。
這是我用來解決這個問題的答案:Visible buttons with transparent navigation bar
根據您的情況,這將是很容易製作動畫使用此方法黯淡。 – brandonbocklund
這當然取決於相關視圖下方的顏色。最有可能的是窗戶的顏色,但不一致。 –