第一个自己做的ios小demo-星座

来源:互联网 发布:淘宝自动刷销量软件 编辑:程序博客网 时间:2024/05/06 11:30

写的代码不过精炼,还需要改进!奋斗


//  ViewController.m
//  901星座设置

#import "ViewController.h"
#import "Solars.h"
//屏幕宽,高
#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height
//间隙
#define SPACE_SMALL 20
@interface ViewController ()
{
    UIButton *_resetBtn;//设置按钮
    UIButton *_detailBtn;//详情按钮
    UISlider *_monthSlider;//月份滑块
    UILabel *_orderMonthLable;//第几个月份
    UILabel *_solarIntervalLable;//星座日期间隔时期
    UIImageView *_imgSolarView;//星座view
    UIImageView *_solarImage;//星座大图
    NSMutableArray *_solarAry;//存储星座对象
    UIView *_detailView;//详情view
    UILabel *_detailLable;//展示详情lable
    UIView *_resetView;//设置view
    UISlider *_scaleSlider;//图片大小滑块
    UISwitch *_blackSwitch;//夜间模式
    int _pageNum;//页码
    
    
}
@end


@implementation ViewController


- (void)viewDidLoad {
    [super viewDidLoad];
    _pageNum=0;
    //获取所有的星座信息
    [self getAllSolarInfo];
    //添加设置按钮
    [self addResetBtn];
    //添加详情按钮
    [self addDetailBtn];
    //第几个月份
    [self addOrderMonthLable];
    //星座大图
    [self addImgSolarView];
    //星座日期
    [self addSolarIntervalLable];
    //滑动块
    [self addMonthSlider];
    
    
    //设置的view
    [self addResetToBlackAndImageSizeView];
    //详情按钮
    [self addDetailView];
    
    //设置默认界面显示的月份  通过调用滑块方法
    _monthSlider.value=5;
    [self changeMonthSlider:_monthSlider];
    
    //月份滑块监听
    [_monthSlider addTarget:self action:@selector(changeMonthSlider:) forControlEvents:UIControlEventValueChanged];
    
    //设置按钮监听
    [_resetBtn addTarget:self action:@selector(clickResetBtn:) forControlEvents:UIControlEventTouchUpInside];
    
    //详情监听
    [_detailBtn addTarget:self action:@selector(clickDetailBtn:) forControlEvents:UIControlEventTouchUpInside];
    
    
}
#pragma mark-修改某个月份信息,修改图,日期,间隔
-(void)changeSolarInfoWithMonth:(int) month{
    //获取某个月份的星座信息
    Solars *solar;
    solar=[_solarAry objectAtIndex:month-1];
        //判断页码是否改变,避免一直调用
    if (month==_pageNum)
        return;
    //更新页码
    _pageNum=month;
    //修改是第几张图
    _orderMonthLable.text=[NSString stringWithFormat:@"%lu/%lu",(unsigned long)solar.month,(unsigned long)_solarAry.count];
    //修改图片
    _imgSolarView.image=[UIImage imageNamed:solar.solarPhoto];
    //获取星座日期概述 星座对象的数组的index取值
    _solarIntervalLable.text=solar.solarInterval;
    
    //修改详细信息
    _detailLable.text=solar.solarInfo;
}
#pragma mark-详情view
-(void)addDetailView{
    // SCREEN_HEIGHT/2+SCREEN_HEIGHT
    _detailView=[[UIView alloc] initWithFrame:CGRectMake(0,SCREEN_HEIGHT/2+SCREEN_HEIGHT,SCREEN_WIDTH,SCREEN_HEIGHT/2)];
    _detailView.backgroundColor=[UIColor redColor];
    //伪背景
    UIImageView *detailImage=[[UIImageView alloc] initWithFrame:CGRectMake(0,7,SCREEN_WIDTH,CGRectGetHeight(_detailView.frame)-7)];
    detailImage.image=[UIImage imageNamed:@"bg2.jpg"];
    detailImage.alpha=0.8;
    _detailLable=[[UILabel alloc] initWithFrame:CGRectMake(SPACE_SMALL*4+SPACE_SMALL/2,SPACE_SMALL*4,140,120)];
    //默认一月
    Solars *solar;
    solar=[_solarAry objectAtIndex:0];
    _detailLable.text=solar.solarInfo;
    _detailLable.textColor=[UIColor whiteColor];
//    _detailLable.backgroundColor=[UIColor greenColor];
    //字号
    _detailLable.adjustsFontSizeToFitWidth=YES;
    _detailLable.font=[UIFont boldSystemFontOfSize:12];
    _detailLable.numberOfLines=0;
    //换行
    [self.view addSubview:_detailView];
    [_detailView addSubview:detailImage];
    [_detailView addSubview:_detailLable];
    
}
#pragma mark-设置view
-(void)addResetToBlackAndImageSizeView{
    //默认设置在屏幕滴边界的下方
    _resetView=[[UIView alloc] initWithFrame:CGRectMake(0,SCREEN_HEIGHT,SCREEN_WIDTH,SPACE_SMALL*8)];
    _resetView.tag=100;
    _resetView.backgroundColor=[UIColor redColor];
    //伪背景
    UIImageView *resetImage=[[UIImageView alloc] initWithFrame:CGRectMake(0,7,SCREEN_WIDTH,CGRectGetHeight(_resetView.frame)-7)];
    resetImage.image=[UIImage imageNamed:@"bg1.jpg"];
    resetImage.alpha=0.8;
    
    //添加夜间模式开关
    UILabel *blackLable=[[UILabel alloc] initWithFrame:CGRectMake(SPACE_SMALL,2*SPACE_SMALL,100,20)];
    blackLable.text=@"夜间模式:";
    blackLable.font=[UIFont boldSystemFontOfSize:20];
    
    blackLable.textColor=[UIColor colorWithRed:1 green:1 blue:1 alpha:1];
    //开关
    
    _blackSwitch=[[UISwitch alloc] init];
    _blackSwitch.center=CGPointMake(CGRectGetMaxX(blackLable.frame)+3*SPACE_SMALL ,SPACE_SMALL/2*5);
    //设置小圆点的颜色
    _blackSwitch.thumbTintColor=[UIColor whiteColor];
    //UISwitch 两种状态 on,off
    //设置开状态的颜色
    _blackSwitch.onTintColor=[UIColor redColor];
    //设置关状态的颜色
    _blackSwitch.tintColor=[UIColor whiteColor];
    //默认是关状态
    [_blackSwitch setOn:NO animated:YES];
    
    //添加图片大小滑块
    UILabel *imgLable=[[UILabel alloc] initWithFrame:CGRectMake(SPACE_SMALL,blackLable.frame.origin.y+3*SPACE_SMALL,100,20)];
    imgLable.text=@"图片大小:";
    imgLable.font=[UIFont boldSystemFontOfSize:20];
    
    imgLable.textColor=[UIColor colorWithRed:1 green:1 blue:1 alpha:1];
    imgLable.textColor=[UIColor whiteColor];
    
    _scaleSlider=[[UISlider alloc] initWithFrame:CGRectMake(CGRectGetMinX(_blackSwitch.frame),blackLable.frame.origin.y+3*SPACE_SMALL,150,20)];
    //设置最小的缩放倍数
    _scaleSlider.minimumValue=0.2;
    //最大放大倍数
    _scaleSlider.maximumValue=1;
    _scaleSlider.minimumTrackTintColor=[UIColor redColor];
    _scaleSlider.maximumTrackTintColor=[UIColor whiteColor];
    _scaleSlider.thumbTintColor=[UIColor whiteColor];
    //默认是最大的放大倍数
    _scaleSlider.value=1;
    
    
    [_resetView addSubview:resetImage];
    [self.view addSubview:_resetView];
    [_resetView addSubview:imgLable];
    [_resetView addSubview:_scaleSlider];
    [_resetView addSubview:blackLable];
    [_resetView addSubview:_blackSwitch];
    
}
#pragma mark-设置按钮监听
-(void)clickResetBtn:(UIButton *) sender{
    sender.selected=!sender.selected;
    
    if(sender.selected){
        //如果详情view显示并未消失,先消失view,再滑出
        if (_detailBtn.selected) {
            _detailBtn.selected=!_detailBtn.selected;
            //隐藏view
            [self hiddendetailView];
        }
        //滑出view
        [self flyRetView];
 
    }else{
        //隐藏
        [self hiddenRetView];
    }
}
#pragma mark-封装滑出resetView
-(void)flyRetView{
    [UIView animateWithDuration:0.5 animations:^{
        CGRect frame=_resetView.frame;
        frame.origin.y-=SPACE_SMALL*8;
        _resetView.frame=frame;
        [self.view addSubview:_resetView];
        //开关啥的
        //夜间模式开关监听事件
        [_blackSwitch addTarget:self action:@selector(clickBlackSwitch:) forControlEvents:UIControlEventValueChanged];
        //滑块监听
        [_scaleSlider addTarget:self action:@selector(clickScaleSlider:) forControlEvents:UIControlEventValueChanged];
    }];
}
#pragma mark-封装隐藏resetView
-(void)hiddenRetView{
//    _resetBtn.selected?0.3:0  判断是否点击了,点击了消除,否则不管
    [UIView animateWithDuration:_resetBtn.selected?0.3:0 animations:^{
        //隐藏view
        _resetView.alpha=0;
    } completion:^(BOOL finished) {
        //恢复初始状态
        CGRect frame=_resetView.frame;
        frame.origin.y+=SPACE_SMALL*8;
        _resetView.frame=frame;
        [self.view addSubview:_resetView];
        _resetView.alpha=1;
    }];
}
#pragma mark-封装滑出detailView
-(void)flyDetailView{
    [UIView animateWithDuration:0.5 animations:^{
        //动画弹出
        CGRect frame=_detailView.frame;
        //SCREEN_HEIGHT/2+SCREEN_HEIGHT
        frame.origin.y-=SCREEN_HEIGHT;
        _detailView.frame=frame;
        [self.view addSubview:_detailView];
    }];
}
#pragma mark-封装隐藏detailView
-(void)hiddendetailView{
    [UIView animateWithDuration:_detailBtn.selected?0.3:0 animations:^{
        _detailView.alpha=0;
    } completion:^(BOOL finished) {
        CGRect frame=_detailView.frame;
        //SCREEN_HEIGHT/2+SCREEN_HEIGHT
        frame.origin.y+=SCREEN_HEIGHT;
        _detailView.frame=frame;
        [self.view addSubview:_detailView];
        _detailView.alpha=1;
    }];
}


#pragma mark-详情按钮监听
-(void)clickDetailBtn:(UIButton *)sender{
    sender.selected=!sender.selected;
    if(sender.selected){
        if (_resetBtn.selected) {
            _resetBtn.selected=!_resetBtn.selected;
            [self hiddenRetView];
        }
        //(根据设置按钮状态或者设置view位置)如果设置未消失,先隐藏设置view,设置变为默认状态,后显示详情view
        [self flyDetailView];
    }else{
        //隐藏view
        [self hiddendetailView];
        
    }
    
}


#pragma mark-夜间模式开关监听事件
-(void)clickBlackSwitch:(UISwitch *) sender{
    if(sender.on){
        //开启夜间模式
        self.view.backgroundColor=[UIColor blackColor];
        _orderMonthLable.textColor=[UIColor whiteColor];
        _solarIntervalLable.textColor=[UIColor whiteColor];
    }else{
        //白色
        self.view.backgroundColor=[UIColor whiteColor];
        _orderMonthLable.textColor=[UIColor blackColor];
        _solarIntervalLable.textColor=[UIColor blackColor];
    }
}
#pragma mark-图片大小监听
-(void)clickScaleSlider:(UISlider *) sender{
    float value=sender.value;
    
//     _imgSolarView.transform=CGAffineTransformIdentity;
//    //保留之前的状态
//    _imgSolarView.transform=CGAffineTransformScale(_imgSolarView.transform,value,value);
    //不会保存上次的状态
    _imgSolarView.transform=CGAffineTransformMakeScale(value, value);
    


}
#pragma mark-滑块的监听,改变图片和星座日期,第几个星座
-(void)changeMonthSlider:(UISlider *) sender{
    //获取滑块的value值
    //确保平均分成12份 0.51~12.49  四舍五入+0.5
    NSLog(@"%f,%i",sender.value,(int)(sender.value+0.5));
    //修改信息
    [self changeSolarInfoWithMonth:(int)(sender.value+0.5)];
}
#pragma mark-获取星座的所有信息
-(void)getAllSolarInfo{
    //获取plist文件路径
    NSString *filePath=[[NSBundle mainBundle] pathForResource:@"Solars" ofType:@"plist"];
    NSArray *rootaAry=[NSArray arrayWithContentsOfFile:filePath];
    //从文件中获取星座添加到数组
    _solarAry=[[NSMutableArray alloc] init];
    for(NSDictionary *dict in rootaAry){
        Solars *solar=[[Solars alloc]initWithDictionary:dict];
        [_solarAry addObject:solar];
        
    }
    
}
#pragma mark-设置滑动块
-(void)addMonthSlider{
    _monthSlider=[[UISlider alloc] initWithFrame:CGRectMake(CGRectGetMinX(_imgSolarView.frame),CGRectGetMaxY(_solarIntervalLable.frame)+SPACE_SMALL, CGRectGetWidth(_imgSolarView.frame), 20)];
    _monthSlider.minimumValue=0.51;
    _monthSlider.maximumValue=12.49;
    _monthSlider.minimumValueImage=[UIImage imageNamed:@"icon1.gif"];
    _monthSlider.maximumValueImage=[UIImage imageNamed:@"icon12.gif"];
    _monthSlider.thumbTintColor=[UIColor redColor];
    _monthSlider.minimumTrackTintColor=[UIColor greenColor];
    _monthSlider.maximumTrackTintColor=[UIColor yellowColor];
    
    [self.view addSubview:_monthSlider];
    
}
#pragma mark-星座日期
-(void)addSolarIntervalLable{
    _solarIntervalLable=[[UILabel alloc] initWithFrame:CGRectMake(3*SPACE_SMALL, CGRectGetMaxY(_imgSolarView.frame)+SPACE_SMALL, 220, 30)];
    //需要从plist文件读取
//    Solars *solar=[_solarAry objectAtIndex:0];
//    _solarIntervalLable.text=solar.solarInterval;
    
    [self.view addSubview:_solarIntervalLable];
    
}
#pragma mark-星座大图imageView
-(void)addImgSolarView{
    _imgSolarView=[[UIImageView alloc] initWithFrame:CGRectMake(SPACE_SMALL*3/2,_resetBtn.frame.size.height+SPACE_SMALL*3/2,260,400)];
//    _imgSolarView.image=[UIImage imageNamed:@"star1.jpg"];
    [self.view addSubview:_imgSolarView];
    
}
#pragma mark-设置按钮
-(void)addResetBtn{
    _resetBtn=[[UIButton alloc] initWithFrame:CGRectMake(SPACE_SMALL, SPACE_SMALL,70, 28)];
    _resetBtn.backgroundColor=[UIColor lightGrayColor];
    [_resetBtn setTitle:@"设置" forState:UIControlStateNormal];
    [_resetBtn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [_resetBtn setTitleColor:[UIColor greenColor] forState:UIControlStateSelected];
    
    [self.view addSubview:_resetBtn];
}
#pragma mark-设置详情按钮
-(void)addDetailBtn{
    _detailBtn=[[UIButton alloc] initWithFrame:CGRectMake(SCREEN_WIDTH-SPACE_SMALL-70, SPACE_SMALL, 70,28)];
    _detailBtn.backgroundColor=[UIColor lightGrayColor];
    [ _detailBtn setTitle:@"详情" forState:UIControlStateNormal];
    [ _detailBtn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [ _detailBtn setTitleColor:[UIColor greenColor] forState:UIControlStateSelected];
    
    [self.view addSubview: _detailBtn];
}


#pragma mark-设置中间的显示第几个月份的lable
-(void)addOrderMonthLable{
    _orderMonthLable=[[UILabel alloc] initWithFrame:CGRectMake(140,28, 60, 20)];
    //默认是1月份
//    Solars *solar;
//    solar=[_solarAry objectAtIndex:0];
//    _orderMonthLable.text=[NSString stringWithFormat:@"%lu/%lu",solar.month,_solarAry.count];
    
    [self.view addSubview:_orderMonthLable];
    
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end



0 0
原创粉丝点击