use*_*695 43 objective-c ios uipageviewcontroller
我在我的应用程序中使用UIPageViewController,它工作正常.但是,它自动添加的页面控件有一个黑色背景,隐藏了当前视图控制器的底部材质(见下图).是否可以调用UIPageViewController的页面控件并更改它的颜色?我希望页面控件显示在视图控制器上(例如,路径应用程序的演练),比如设置颜色而不是黑色来清除.
Yas*_* T. 84
您可以使用appearance
更改UIPageControl的颜色,否则无法访问它.尝试在AppDelegate的didFinishLaunchingWithOptions
功能中执行此操作,如下所示.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UIPageControl *pageControl = [UIPageControl appearance];
pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
pageControl.currentPageIndicatorTintColor = [UIColor blackColor];
pageControl.backgroundColor = [UIColor blueColor];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
要仅将样式应用于特定视图控制器,您可以使用appearanceWhenContainedIn
以下内容:
UIPageControl *pageControl = [UIPageControl appearanceWhenContainedIn:[MyViewController class], nil];
Run Code Online (Sandbox Code Playgroud)
只有UIPageControl
包含在其中的对象MyViewController
才能获得这种风格.
编辑:
黑色背景围绕UIPageControl
在屏幕的底部是由于你的背景颜色UIPageViewController
不是UIPageControl
.您可以更改此颜色,如下所示:
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor blueColor]; //Set it to whatever you like
}
Run Code Online (Sandbox Code Playgroud)
小智 27
针对Swift 3进行了更新:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
for view in self.view.subviews {
if view is UIScrollView {
view.frame = UIScreen.main.bounds
} else if view is UIPageControl {
view.backgroundColor = UIColor.clear
}
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 2示例适用于任何需要它的人.把它放在你的UIPageController子类中.
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
for view in self.view.subviews {
if view is UIScrollView {
view.frame = UIScreen.mainScreen().bounds
} else if view is UIPageControl {
view.backgroundColor = UIColor.clearColor()
}
}
}
Run Code Online (Sandbox Code Playgroud)
在UIPageViewController中添加以下代码.
- (void)viewDidLoad {
[super viewDidLoad];
[[UIPageControl appearance] setPageIndicatorTintColor: [UIColor grayColor]];
[[UIPageControl appearance] setCurrentPageIndicatorTintColor: [UIColor whiteColor]];
[[UIPageControl appearance] setBackgroundColor: [UIColor darkGrayColor]];
}
Run Code Online (Sandbox Code Playgroud)
只需子类化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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将扩展内部滚动视图框架.
这是Yas-T答案的Swift 2 + 版本
//In AppDelegate
let pageControl = UIPageControl.appearance()
pageControl.pageIndicatorTintColor = UIColor.lightGrayColor()
pageControl.currentPageIndicatorTintColor = UIColor.blackColor()
pageControl.backgroundColor = UIColor.blueColor()
//Or in your ViewController (Only available on IOS 9.0)
if #available(iOS 9.0, *) {
let pageControl = UIPageControl.appearanceWhenContainedInInstancesOfClasses([ViewController.self])
pageControl.pageIndicatorTintColor = UIColor.lightGrayColor()
pageControl.currentPageIndicatorTintColor = UIColor.darkGrayColor()
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
31547 次 |
最近记录: |