私は夜間に私のアプリの明るさを抑えようとしています。私はUIViewをかなりコントロールしていますが、UITabBar
とUINavigationController
は私に問題をもたらしています。iOS UITabBarとUINavigationControllerを非表示にする方法を教えてください。
どのように私はUITabBar
とUINavigationController
を隠すことなくそれらを薄暗くすることができますか?
私は夜間に私のアプリの明るさを抑えようとしています。私はUIViewをかなりコントロールしていますが、UITabBar
とUINavigationController
は私に問題をもたらしています。iOS UITabBarとUINavigationControllerを非表示にする方法を教えてください。
どのように私はUITabBar
とUINavigationController
を隠すことなくそれらを薄暗くすることができますか?
UITabBarあなたがすることができますO:
tabBar.alpha = 0.5
A UINavigationControllerはビューではありません、それはあなたがそれを暗くしたいと言うときので、それは意味がない、コントローラです。
navigationController.navigationBar.alpha = 0.5;
をそれとも、navigationControllerのすべてを暗くしたい場合は:あなたはUINavigationBarを暗くしたいことを意味している場合、あなたは何ができる
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
ナビゲーションバーでも同じことをやってください。
ナビゲーションコントローラによって管理されるナビゲーションバー:
これは古くなった素材です。しかし、Appearance APIは良い考えです。 –
あなたは正しいですが、初心者は私たちが助言していることをすることはできません。何らかの理由で。したがって、この場合、別のオプションが必要です。それはちょうど私のために一度働いたものです。 – SentineL
これはnavigationBar
はdocumentationに宣言されている方法です。 (読み取り専用)
あなたがそのフレーム、境界、またはアルファ値を変更していないか、そのビューを変更決してしなければならないUINavigationBarクラスのメソッドとプロパティを使用して、ナビゲーションバーの外観をカスタマイズすることが許されているが、直接階層。ナビゲーションバーを表示するか非表示にするかは、常にnavigationBarHiddenプロパティを変更するか、setNavigationBarHidden:animated:メソッドを呼び出すことによって、ナビゲーションコントローラを介して行う必要があります。
これは私がこの問題を解決するために使用答えです:Visible buttons with transparent navigation bar
状況に応じて、この方法を使用して暗くし、それをアニメーション化するのは簡単だろう。 – brandonbocklund
これはもちろん、問題のビューの下にある色によって異なります。ほとんどの場合、ウィンドウの色ですが、一貫していません。 –