使用 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 中的屏幕大小显示?的主要内容,如果未能解决你的问题,请参考以下文章

使用视 meta 标签来控制手机浏览器布局

在一个视图表中对多个模型进行排序

iOS Swift:在呈现 imagePicker 后,SlidingMenuView 位置错误

如何在使用 UIpageviewcontroller 导航页面时从另一个视图控制器自动更新视图控制器上的标签

UISegmentedControl 设置 UITableView、页面控制、scrollview、图像视图

页面应用程序 + 自动布局 + 子视图在滚动时缩放