本章阐述如何使用IOS移动端开发时,做一个界面上实现分页的效果,状态拦上左右相互之间切换。
一:DeviceController.h
#import <UIKit/UIKit.h>
#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 <UIKit/UIKit.h>
#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()<TempViewDelegate>
@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分页的左右切换,留下记录希望帮助到更多需要的IT移动开发者,若不懂,可以留言,关注。