IOS - 会员中心页面和逻辑

标签: MystraIOS会员中心界面
945人阅读 评论(0) 收藏 举报
分类:

会员中心界面:
根据VIP状态的不同, 显示不同内容, 并设置按钮跳转支付页面.


代码

//
//  MemberCenterViewController.h
//  SymptomChecker
//
//  Created by C.L.Wang on 15/7/9.
//
//

/**
 * 会员中心页面, 根据VIP状态显示不同.
 * @{link AutoLoginManager#queryUsableService}设置VIP状态
 */

#import "CYModelViewController.h"

@interface MATMemberCenterViewController : CYModelViewController

@end
//
//  MemberCenterViewController.m
//  SymptomChecker
//
//  Created by C.L.Wang on 15/7/9.
//
//

#import "MATMemberCenterViewController.h"

#import "VIPAlipayViewController.h" // 支付页面

#import "UserLoginViewController.h" // 登录页面

#define kViewRatio viewWidth()/320 // 宽度单位

@interface MATMemberCenterViewController ()

@end

@implementation MATMemberCenterViewController {
    UIImageView *_memberStateIcon; // 会员状态图片
    UILabel *_memberStateText; // 会员状态文字

    UILabel *_serviceOfOwnership; // 拥有服务
    UILabel *_noserviceOfOwnership; // 未拥有服务

    UIView *_infiniteTimesItem; // 健康数据
    UIView *_selfExaminationItem; // 自我检查
    UIView *_healthDataItem; // 无线次数

    FilledColorButton *_processButton; // 处理按钮

    BOOL _needRefresh; // 是否刷新
}

// 初始化类
- (id) initWithNavigatorURL:(NSURL *)URL query:(NSDictionary *)query {
    self = [super initWithNavigatorURL:URL query:query];
    if (self) {
        [self resetData];
    }
    return self;
}

// 重置数据
- (void) resetData {
    _needRefresh = YES;
}

// 页面初始化
- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"会员中心";
}

// 页面显示
- (void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear: animated];

    if (_needRefresh && [User hasLoggedIn]) {
        _needRefresh = NO;

        NSMutableDictionary* access = [[NSMutableDictionary alloc] init];
        if ([[User currentUser] matIsVip] == 1) { // VIP
            [access setObject:@"icon_mat_isvip" forKey:@"memberStateIcon"];
            [access setObject:@"已开通会员包月服务" forKey:@"memberStateText"];
            [access setObject:@1 forKey:@"noserviceOfOwnership"];
            [access setObject:@"icon_mat_checked" forKey:@"infiniteTimesItem"];
            [access setObject:@"立即续费" forKey:@"processButton"];
        } else { // 非VIP
            [access setObject:@"icon_mat_notvip" forKey:@"memberStateIcon"];
            [access setObject:@"暂未开通会员优惠" forKey:@"memberStateText"];
            [access setObject:@0 forKey:@"noserviceOfOwnership"];
            [access setObject:@"icon_mat_notcheck" forKey:@"infiniteTimesItem"];
            [access setObject:@"立即开通" forKey:@"processButton"];
        }

        [self createModelWithDict:access];
    }
}

/**
 *  创建界面, VIP不同页面不同
 *
 *  @param access 是否VIP
 */
- (void) createModelWithDict:(NSMutableDictionary*)access {

    [self.view setBackgroundColor:[UIColor whiteColor]];

    // 会员状态图标
    _memberStateIcon = [CYResource loadImageView:access[@"memberStateIcon"]
                                        andFrame:CGRectMake(viewWidth()/2-36*kViewRatio, 36*kViewRatio, 72*kViewRatio, 72*kViewRatio)];
    [self.view addSubview:_memberStateIcon];

    // 会员状态文字
    _memberStateText = [UILabel labelWithFrame:CGRectMake(0, _memberStateIcon.bottom+8*kViewRatio, viewWidth(), 36*kViewRatio)
                                      fontSize:20*kViewRatio
                                     fontColor:[UIColor blackColor]
                                          text:access[@"memberStateText"]];
    [_memberStateText setAdjustsFontSizeToFitWidth:YES];
    [_memberStateText setTextAlignment:NSTextAlignmentCenter];
    [self.view addSubview:_memberStateText];

    // 服务标题
    _serviceOfOwnership = [UILabel labelWithFrame:CGRectMake(12*kViewRatio, _memberStateText.bottom, viewWidth(), 48*kViewRatio)
                                         fontSize:18*kViewRatio
                                        fontColor:[UIColor blackColor]
                                             text:@"已享有服务"];
    [_serviceOfOwnership setAdjustsFontSizeToFitWidth:YES];
    [_serviceOfOwnership setTextAlignment:NSTextAlignmentLeft];
    [self.view addSubview:_serviceOfOwnership];

    // 健康工具项
    _healthDataItem = [[UIView alloc] initWithFrame:CGRectMake(12*kViewRatio, _serviceOfOwnership.bottom, viewWidth(), 32*kViewRatio)];
    [self.view addSubview:[self viewOfCombinationWithView:_healthDataItem image:@"icon_mat_checked" text:@"健康数据跟踪记录"]];

    // 自我检查项
    _selfExaminationItem = [[UIView alloc] initWithFrame:CGRectMake(12*kViewRatio, _healthDataItem.bottom, viewWidth(), 32*kViewRatio)];
    [self.view addSubview:[self viewOfCombinationWithView:_selfExaminationItem image:@"icon_mat_checked" text:@"自我检查全面分析"]];

    // 未服务标题
    CGRect cr = CGRectMake(12*kViewRatio, _selfExaminationItem.bottom, viewWidth(), ([access[@"noserviceOfOwnership"] intValue]==0)?48*kViewRatio:0);
    _noserviceOfOwnership = [UILabel labelWithFrame:cr
                                           fontSize:18*kViewRatio
                                          fontColor:[UIColor blackColor]
                                               text:([access[@"noserviceOfOwnership"] intValue]==0)?@"开通可享有服务":@""];
    [_noserviceOfOwnership setAdjustsFontSizeToFitWidth:YES];
    [_noserviceOfOwnership setTextAlignment:NSTextAlignmentLeft];
    [self.view addSubview:_noserviceOfOwnership];

    // 无线次数项
    _infiniteTimesItem = [[UIView alloc] initWithFrame:CGRectMake(12*kViewRatio, _noserviceOfOwnership.bottom, viewWidth(), 32*kViewRatio)];
    [self.view addSubview:[self viewOfCombinationWithView:_infiniteTimesItem image:access[@"infiniteTimesItem"] text:@"在线问诊不限次数"]];

    // 处理按钮
    _processButton = [[FilledColorButton alloc] initWithFrame:CGRectMake(12*kViewRatio, _infiniteTimesItem.bottom, viewWidth()-24*kViewRatio, 40*kViewRatio)
                                                         type:kFilledBtnGreen
                                                        title:access[@"processButton"]];
    [_processButton addTarget: self
                       action: @selector(onSubmitBtnPressedAfterLogin:)
             forControlEvents: UIControlEventTouchUpInside];

    [self.view addSubview:_processButton];
}

/**
 *  左图片和右文字组合控件
 *
 *  @param view      父控件
 *  @param imageName 图片本地路径
 *  @param text      文字
 *
 *  @return 组合控件
 */
- (UIView*) viewOfCombinationWithView:(UIView*)view image:(NSString*)imageName text:(NSString*)text {

    // 图片视图
    UIImageView* iv = [CYResource loadImageView:imageName
                                       andFrame:CGRectMake(0, 0, 16*kViewRatio, 16*kViewRatio)];
    [iv setContentMode:UIViewContentModeScaleToFill];

    // 文字视图
    [view addSubview:iv];
    UILabel* tv = [UILabel labelWithFrame:CGRectMake(32*kViewRatio, 0, viewWidth(), 16*kViewRatio)
                                 fontSize:16*kViewRatio
                                fontColor:[UIColor grayColor]
                                     text:text];
    [view addSubview:tv];
    return view;
}

// 按钮点击事件
- (void) onSubmitBtnPressedAfterLogin:(UIButton*) sender {
    NIDPRINTMETHODNAME();
    if (![User hasLoggedIn]) {
        _needRefresh = YES;
        UserLoginViewController *controller = [UserLoginViewController new];
        [self cyPresentModalViewController:controller animated:YES];
    } else {
        NSDictionary *fakeData = @{@"source": @"vip",
                                   @"problem_id": ENSURE_NOT_NULL(@"1234"),
                                   @"ignore_tel": @(YES)};
        VIPAlipayViewController* controller =
        [[VIPAlipayViewController alloc]initWithNavigatorURL:nil
                                                       query:fakeData];
        [self.navigationController pushViewController:controller animated:YES];
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

会员中心页面
会员中心


娱乐

2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2372498次
    • 积分:31676
    • 等级:
    • 排名:第154名
    • 原创:706篇
    • 转载:1篇
    • 译文:0篇
    • 评论:380条
    自我简介
    文章分类
    最新评论