2013-10-08 16 views
6
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) 
    { 
     self.edgesForExtendedLayout = UIRectEdgeNone; 
     self.navigationController.navigationBar.translucent=YES; 
    } 

    // Do any additional setup after loading the view. 
} 

デフォルトでは、私のscrollViewをナビゲーションバーの後ろにしたくありません。だから私はself.edgesForExtendedLayout = UIRectEdgeNone;を設定した。self.edgesForExtendedLayout = UIRectEdgeNoneのときにナビゲーションバーが半透明になっています

そのviewDidLoadは、すべての私のviewControllerのmother viewDidLoadです。

これは問題ありません。しかし、私は半透明の効果が好きです。

self.edgesForExtendedLayoutをnoneに設定すると、半透明効果がなくなっているようです。

どのように私はそれをnoneに設定しても、その半透明の効果を得ました。

enter image description here

enter image description here

私は良い解決策はscrollviewのインセットを配置することだと思います。

私は

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) 
    { 
     //self.edgesForExtendedLayout = UIRectEdgeNone; 
     self.navigationController.navigationBar.translucent=YES; 
     self.automaticallyAdjustsScrollViewInsets = YES; 
    } 

    // Do any additional setup after loading the view. 
} 

そして、これは私が得たものであることをやった:

enter image description here

+0

これを試してみてください。これはあなたのビューを下に拡大しませんが、残りの部分は延長されます
[self setEdgesForExtendedLayout:UIRectEdgeTop | | UIRectEdgeLeft | UIRectEdgeRight]; – Jageen

+0

あなたはそれを解決済みとマークしましたか? – Firdous

+0

はいそれは今です –

答えて

2

半透明のバーの下にコンテンツが半透明を通して見ることができることを意味しています。拡張されたエッジをオフにすると、透明度はそのまま残ります。下にコンテンツがないため、見えません。

+0

私はまだその半透明効果を持つことができる方法はありますか?おそらく、メインビューでエッジや何かのサブビューをクリップしない場合です。 –

+1

クリップのサブビューをfalseに設定しても、その透過エッジが得られません。 –

+0

スクロールビューのインセットをyesに自動的に設定する設定も機能しません。 –

6

私は今同じ問題があります。したがって、半透明のナビゲーションバーを維持する必要がある場合は、エッジではなくインセットを変更する必要があります。 ここにコードがあります。

if(floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { 
     CGRect statusBarViewRect = [[UIApplication sharedApplication] statusBarFrame]; 
     float heightPadding = statusBarViewRect.size.height+self.navigationController.navigationBar.frame.size.height; 

     myContentView.contentInset = UIEdgeInsetsMake(heightPadding, 0.0, 0.0, 0.0); 
} 

希望します。

+0

それは考えです。しかし、私はself.automaticallyAdjustsScrollViewInsets = YESと思った。これを自動的に達成したはずです。 –

+0

それは私のために働いていないが、私は推測するかもしれない理由を知らない。カスタムナビゲーションコントローラやカスタムツールを使用してView Controllerを表示している場合、iOSはナビゲーションバーが表示されていないと判断するため、調整やコンテンツのインセットが正しく計算されない可能性があります。 –

関連する問題