【问题标题】:Page view controller using CAPSPageMenu controller titles are not displaying according to Screen size in iOS 10?使用 CAPSPageMenu 控制器标题的页面视图控制器未根据 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];

【问题讨论】:

    标签: uiviewcontroller uiscrollview uistoryboard uipagecontrol


    【解决方案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 中它不起作用。
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多