使用 CAPSPageMenu 控制器标题的页面视图控制器未根据 iOS 10 中的屏幕大小显示?
Posted
技术标签:
【中文标题】使用 CAPSPageMenu 控制器标题的页面视图控制器未根据 iOS 10 中的屏幕大小显示?【英文标题】:Page view controller using CAPSPageMenu controller titles are not displaying according to Screen size in iOS 10? 【发布时间】:2017-09-20 01:18:31 【问题描述】:我正在使用 CAPSPageMenu 作为页面控制器,加载两个视图控制器作为第一个屏幕,但它没有在 6s plus 设备中显示控制器标题数组。它是这样显示的,
我想显示屏幕大小的一半。
这是我正在使用的代码,
NSArray *controllerArray = @[jobVC, course];
NSDictionary *parameters = @CAPSPageMenuOptionMenuItemSeparatorWidth: @(1.0),
CAPSPageMenuOptionUseMenuLikeSegmentedControl: @(YES),
CAPSPageMenuOptionMenuMargin:@(20.0),
CAPSPageMenuOptionMenuItemSeparatorRoundEdges: @(YES),
CAPSPageMenuOptionSelectionIndicatorHeight :@(2.0),CAPSPageMenuOptionMenuItemSeparatorPercentageHeight: @(0.5)
;
_pageMenu = [[CAPSPageMenu alloc] initWithViewControllers:controllerArray frame:CGRectMake(0.0, 0.0, self.contentView.frame.size.width, self.contentView.frame.size.height) options:parameters];
_pageMenu.delegate = self;
[self.contentView addSubview:_pageMenu.view];
【问题讨论】:
【参考方案1】:您应该正确设置视图控制器。像这样:
首先在基本视图控制器中为CAPSPageMenu
添加一个属性:
@property (nonatomic) CAPSPageMenu *pagemenu;
然后在视图控制器的viewDidLoad
函数中添加以下代码:
NSMutableArray *controllerArray = [NSMutableArray array];
// Example view controller creation:
UIViewController *firstController = [UIViewController alloc] initWithNibname:@"YourFirstControllerNibName" bundle:nil];
controller.title = @"YOUR SAMPLE TITLE (eg. SEARCH JOBS)";
[controllerArray addObject:firstControllerName ];
UIViewController *secondController = [UIViewController alloc] initWithNibname:@"YourSecondControllerNibName" bundle:nil];
secondController .title = @"YOUR SAMPLE TITLE (eg. SEARCH COURSE)";
[controllerArray addObject:secondController ];
//Customize your page menu with parameters:
NSDictionary *parameters = @CAPSPageMenuOptionMenuItemSeparatorWidth: @(1.0),
CAPSPageMenuOptionUseMenuLikeSegmentedControl: @(YES),
//... and more...
;
// Initialize page menu
_pageMenu = [[CAPSPageMenu alloc] initWithViewControllers:controllerArray frame:CGRectMake(0.0, 0.0, self.view.frame.size.width, self.view.frame.size.height) options:parameters];
//Optional delegate
_pageMenu.delegate = self;
// Lastly add page menu as subview of base view controller view
[self.view addSubview:_pageMenu.view];
如果需要,您还可以使用下面的这些委托函数来控制移动操作:
- (void)willMoveToPage:(UIViewController *)controller index:(NSInteger)index
- (void)didMoveToPage:(UIViewController *)controller index:(NSInteger)index
【讨论】:
我尝试了上面的方法,但仍然无法在 iPhone 7 上运行 检查您的 CAPSPageMenuOptionMenuMargin 和其他参数。请先尝试使用默认参数。您的自定义参数可能会造成混淆。 从上面的图片我只加载默认参数。在 5s 中运行良好,但在 7s 中它不起作用。以上是关于使用 CAPSPageMenu 控制器标题的页面视图控制器未根据 iOS 10 中的屏幕大小显示?的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift:在呈现 imagePicker 后,SlidingMenuView 位置错误
如何在使用 UIpageviewcontroller 导航页面时从另一个视图控制器自动更新视图控制器上的标签