0

pageControlTwitter iOSアプリに含まれているのと同じように、ナビゲーションバーにタイトルとタイトルがあるナビゲーションバーを作成したいのですが、設定することで両方を取得しました

self.navigationItem.Title = @"Home";

PageControlのインスタンスを作成し、UIPageControlその中心をナビゲーション バーの中心に設定し、UINavigationController'sDelegateを使用してナビゲーション検出を実現することで、これを実現しました。しかし、問題は、pageControl とタイトルが互いに重なっているということです。どのように設定すれば、タイトルがページ インジケーターの上部に表示されるようになるのでしょうか。を配置するコードは次のとおりですpageControl

self.navigationController.delegate = self;  
CGSize navBarSize = self.navigationController.navigationBar.bounds.size;  
CGPoint origin = CGPointMake( navBarSize.width/2, navBarSize.height/2 );  
self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(origin.x, origin.y,
                                                                   0, 0)];  
[self.pageControl setNumberOfPages:3];  
[self.navigationController.navigationBar addSubview:self.pageControl];

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
int index = [self.navigationController.viewControllers indexOfObject:viewController];  
self.pageControl.currentPage = index;  }
4

1 に答える 1

0

両方(タイトルとpageControl)が重なっていることがわかったので、pageControlのY軸を変更して

self.navigationController.delegate = self;  
CGSize navBarSize = self.navigationController.navigationBar.bounds.size;  
CGPoint origin = CGPointMake( navBarSize.width/2, navBarSize.height/2 );  
self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(origin.x, origin.y+45,
                                                               0, 0)]; //Here added 45 to Y and it did the trick 
[self.pageControl setNumberOfPages:3];  
[self.navigationController.navigationBar addSubview:self.pageControl];

- (void)navigationController:(UINavigationController *)navigationController     willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
int index = [self.navigationController.viewControllers indexOfObject:viewController];  
self.pageControl.currentPage = index;  }  
于 2014-11-02T16:16:43.880 に答える