两步实现IOS之WMPageController分页(左右切换显示)

本章阐述如何使用IOS移动端开发时,做一个界面上实现分页的效果,状态拦上左右相互之间切换。

一:DeviceController.h

#import 
#import "BaseViewController.h"
#import "WMPageController.h"
#import "TempViewController.h"
#import "ChartViewController.h"
#import "CommonDefaults.h"
#import "HomeManager.h"

@interface DeviceController : WMPageController
 
@property (nonatomic, assign) WMMenuViewPosition menuViewPosition;

@property (assign, nonatomic) CGPoint printPoint;

@property (strong, nonatomic) NSString *deviceIds;

@property(strong, nonatomic) NSMutableArray *dcList;

@property(nonatomic, strong) NSString *result;

@end

DeviceController.m

#import "DeviceController.h"

#define maxOffsetY 460

#define XLScreenW [UIScreen mainScreen].bounds.size.width

#define XLScreenH [UIScreen mainScreen].bounds.size.height

#define THWParam [UIScreen mainScreen].bounds.size.width/375.0f

#define THParamH XLScreenH/667.0f

#define XLfloat(a) a*THWParam

#define SafeAreaTopHeight (XLScreenH == 812.0 ? 88 : 64)

#define SafeStatusTopHeight (XLScreenH == 812.0 ? 44 : 0)

#define SafeMeStatusTopHeight (XLScreenH == 812.0 ? 44 : 20)

#define SafeMeStatusBottomHeight (XLScreenH == 812.0 ? 34 : 0)

//调用的相关代理
@interface DeviceController ()<>{
}

@property (nonatomic, strong) UIView *redView;

@end

@implementation DeviceController

- (void)viewDidLoad {
    self.view.backgroundColor = [UIColor grayColor];
    self.progressHeight = 3;//下划线的高度,需要WMMenuViewStyleLine样式
    self.progressWidth = 35;
    self.menuItemWidth = 25;
    self.menuViewContentMargin = 10;

    self.progressViewIsNaughty = true;
    self.menuViewStyle = WMMenuViewStyleLine;
    self.titleColorNormal = [UIColor whiteColor];
    self.titleColorSelected = [UIColor whiteColor];//设置选中文字颜色
    self.progressColor = [UIColor whiteColor];
    self.titleSizeSelected = 18;//设置选中文字大小
    self.titleSizeNormal = 16;
    self.titleFontName = @"Helvetica-Bold";
    self.showOnNavigationBar = YES;
    self.scrollEnable = NO;
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    if (self.menuViewStyle == WMMenuViewStyleTriangle) {
        [self.view addSubview:self.redView];
    }
}
- (UIView *)redView {
    if (!_redView) {
        _redView = [[UIView alloc] initWithFrame:CGRectZero];
        _redView.backgroundColor = [UIColor colorWithRed:168.0/255.0 green:20.0/255.0 blue:4/255.0 alpha:1];
    }
    return _redView;
}

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    self.redView.frame = CGRectMake(0, CGRectGetMaxY(self.menuView.frame), self.view.frame.size.width, 2.0);
}

- (NSInteger)numbersOfChildControllersInPageController:(WMPageController *)pageController {
    switch (self.menuViewStyle) {
        case WMMenuViewStyleFlood: return 2;
        case WMMenuViewStyleSegmented: return 2;
        default: return 2;
    }
}

- (NSString *)pageController:(WMPageController *)pageController titleAtIndex:(NSInteger)index {
    switch (index) {
        case 0: return @"Temp";
        case 1: return @"Chart";
    }
    return @"NONE";
}

- (UIViewController *)pageController:(WMPageController *)pageController viewControllerAtIndex:(NSInteger)index {
    switch (index) {
        case 0:
        {
            TempViewController *temp = [[TempViewController alloc] init];
            //temp.bleModel = self.bleModel;
            return temp;
        }

        case 1:
        {
            ChartViewController *chart = [[ChartViewController alloc] init];
            //chart.bleModel = self.bleModel;
            //chart.LowBattey = self.LowBattey;
            return chart;
        }
    }
    return [[UIViewController alloc] init];
}

- (CGFloat)menuView:(WMMenuView *)menu widthForItemAtIndex:(NSInteger)index {
    CGFloat width = [super menuView:menu widthForItemAtIndex:index];
    return width+30;
}

- (CGRect)pageController:(WMPageController *)pageController preferredFrameForMenuView:(WMMenuView *)menuView {
    if (self.menuViewPosition == WMMenuViewPositionBottom) {
        menuView.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1.0];
        return CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, 44);
    }
    CGFloat leftMargin = self.showOnNavigationBar ? 50 : 0;
    CGFloat originY = self.showOnNavigationBar ? 0 : CGRectGetMaxY(self.navigationController.navigationBar.frame);
    return CGRectMake(leftMargin, originY, self.view.frame.size.width - 2*leftMargin, 44);
}

- (CGRect)pageController:(WMPageController *)pageController preferredFrameForContentView:(WMScrollView *)contentView {
    if (self.menuViewPosition == WMMenuViewPositionBottom) {
        return CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height);
    }
    CGFloat originY = CGRectGetMaxY([self pageController:pageController preferredFrameForMenuView:self.menuView]);
    if (self.menuViewStyle == WMMenuViewStyleTriangle) {
        originY += self.redView.frame.size.height;
    }
    return CGRectMake(0, originY, self.view.frame.size.width, self.view.frame.size.height-originY);
}

/*
 程序加载的时候调用
 */
- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    NSLog(@"%@wo shi jin lai de:",@"xiao ming");
}

二:TempViewController.h

#import 
#import "BaseViewController.h"
#import "TempView.h"

NS_ASSUME_NONNULL_BEGIN

@interface TempViewController : BaseViewController

@property(nonatomic,strong)TempView* tempview;

@end

NS_ASSUME_NONNULL_END

TempViewController.m

#import "TempViewController.h"

@interface TempViewController()

@end


@implementation TempViewController

-(void)viewDidLoad{
    [super viewDidLoad];
    [self initDate];
}

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
}

-(void)initDate{
    [self getTmpView];
    self.tempview.frame=self.view.bounds;
    [self.view addSubview:self.tempview];
    self.tempview.delegate=self;

    self.tempview.mMacLb.text=@"666";
}

-(TempView*)getTmpView{
    if(self.tempview==nil){
        self.tempview = [[TempView alloc] init];
    }
    return self.tempview;
}
@end

ChartViewController界面跟TempViewController一样的模版,改个文件名就可以了。

效果图:
两步实现IOS之WMPageController分页(左右切换显示)_第1张图片
两步实现IOS之WMPageController分页(左右切换显示)_第2张图片

这期就阐述到此为止,很简单的两个界面代码,就可以实现IOS分页的左右切换,留下记录希望帮助到更多需要的IT移动开发者,若不懂,可以留言,关注。

你可能感兴趣的:(IOS)