46

アプリで UIPageViewController を使用していますが、正常に動作しています。ただし、自動的に追加されたページ コントロールは、現在のビュー コントローラーの下部マテリアルを隠している黒い背景を持っています (下の図を参照)。UIPageViewController のページ コントロールを呼び出して色を変更することは可能ですか? 黒ではなく色をクリアに設定するように、ページ コントロールをビュー コントローラー (パス アプリのウォークスルーなど) の上に表示する必要があります。

ここに画像の説明を入力

4

9 に答える 9

8

UIPageViewController をサブクラス化し、次のコードを追加するだけです。

- (void)viewDidLayoutSubviews {
  [super viewDidLayoutSubviews];
  for (UIView *view in self.view.subviews) {
    if ([view isKindOfClass:[NSClassFromString(@"_UIQueuingScrollView") class]]) {
      CGRect frame = view.frame;
      frame.size.height = view.superview.frame.size.height;
      view.frame = frame;
    }
  }
}

これにより、内部スクロール ビュー フレームが拡張されます。

于 2014-09-05T08:25:51.227 に答える
0

ページ ビュー コントローラーのページ コントロールの色を変更するセットアップ メソッドのコードを参照してください。

private func setupPageController() {

    self.pageController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
    self.pageController?.dataSource = self
    self.pageController?.delegate = self
    self.pageController?.view.backgroundColor = .clear
    self.pageController?.view.frame = CGRect(x: 0,y: 0,width: self.view.frame.width,height: self.view.frame.height)
    self.addChild(self.pageController!)
    self.view.addSubview(self.pageController!.view)

    for item in self.pageController?.view?.subviews ?? []{
        if item is UIPageControl{
            (item as! UIPageControl).pageIndicatorTintColor = #colorLiteral(red: 0.501960814, green: 0.501960814, blue: 0.501960814, alpha: 1)
            (item as! UIPageControl).currentPageIndicatorTintColor = #colorLiteral(red: 1, green: 0.7489039302, blue: 0, alpha: 1)
            break
        }
    }
    let initialVC = strBoard.instantiateViewController(withIdentifier: "TutorialOneVC")

    self.pageController?.setViewControllers([initialVC], direction: .forward, animated: true, completion: nil)

    self.pageController?.didMove(toParent: self)
}
于 2020-03-18T18:12:01.707 に答える