2013-10-03 19 views
5

Gezinme denetleyicisi ve sekme çubuğu denetleyicisi olan bir ViewController sahibim. Bu ViewController'da, kaydırma görünümünü ve harita görünümünü görünür kılan 2 düğme vardır. Asıl mesele, bu 2 düğmenin her zaman, oryantasyondan veya görünür olan görünümden bağımsız olarak aynı yerde görünmesidir.iOS MapView, gezinme çubuğu, durum çubuğu ve sekme çubuğu denetleyicisinin altından geçer

Karşılaştığım sorun, MapView'ın düzgün bir şekilde boyutlandırmamasıdır. Ben sadece self.view.bounds bir çerçeve verirseniz, temel olarak tüm ekranı kaplayan gezinme çubuğu/sekme çubuğunun altında gider. Bu, geçiş düğmelerinin yerini atar.

ScrollView'ımın aynı (arka plan rengi ve saydam bir gezinti çubuğu kullanarak) yaptığı, ancak alt görünümlerin konumlandırılmasının görünür alan içinde (gezinme çubuğu ve sekme çubuğu arasında) bulunduğunu fark ettim. Bu yüzden, geçiş düğmelerini eklediğimde, doğru yerde gösterilir.

Geçiş düğmelerine bastığımda, düğmelerin üst görünümünü şimdi görüntülenen görünüme (ScrollView veya MapView) yeniden ataırım. Bu her zaman kaydırma görünümünde çalışır, ancak konumlandırma nedeniyle, MapView görüntülendiğinde gezinme çubuğunun altına girerler.

MapView için çerçeveyi el ile oluşturmayı denedim ancak tek bir sonuç aldım. Ben çerçeve için bunu kullanın: Ben yatay modda görünümü denetleyicisi içine girerseniz

CGRect mapFrame = CGRectMake(
    0, 
    (self.navigationController.navigationBar.frame.size.height + [UIApplication sharedApplication].statusBarFrame.size.height), 
    self.view.frame.size.width, 
    (
    self.view.frame.size.height 
    - (self.navigationController.navigationBar.frame.size.height + [UIApplication sharedApplication].statusBarFrame.size.height + self.tabBarController.tabBar.frame.size.height) 
    ) 
); 

Sonra, otomatik yeniden boyutlandırma maskeleri

[self.mapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin]; 

Ama bununla

set - MapView ekranında kapalıdır. Portre moduna girip sonra yatay konuma dönersek, üst kenar boşluğu kapalıdır ancak yaklaşık 10 nokta olur, böylece gezinme çubuğunun altında bir miktar kalır (ve sekme çubuğu ile harita görünümünün alt kısmı arasında görünür bir kenar boşluğu vardır).

MapView alt görünümlerini yalnızca ScrollView gibi görünen bölgede gösterebilir miyim? Haritanın kendisi gezinme çubuğu/sekme çubuğu

cevap

13

Ugh'un altına girerse çok fazla aldırış etmeyin, cevabı birkaç dakika önce buldum. Bunun neden iOS 7'deki varsayılan davranış olduğunu bilmiyorum ama ne yazık ki var.

çözüm viewController üzerinde viewDidLoad için Sen de cevap olarak bu işaretlemeniz gerekir

[self setEdgesForExtendedLayout:UIRectEdgeNone]; 
[self setAutomaticallyAdjustsScrollViewInsets:NO]; 

Çok teşekkür to the post here

+0

bu eklemektir. :) Yardım için teşekkürler. – James

+0

Çözümünüze teşekkürler. – jhondge