第一个自己做的ios小demo-星座
来源:互联网 发布:淘宝自动刷销量软件 编辑:程序博客网 时间:2024/05/06 11:30
写的代码不过精炼,还需要改进!
// 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
- 第一个自己做的ios小demo-星座
- 自己做的第一个小测试吧 算
- 自己弄得第一个小项目,是按着视频做的 。
- 自己的第一个NDK的Demo
- 自己的第一个游戏demo
- 自己做的一个小demo
- u3d做自己的第一个射击游戏demo,实现开火效果和跟随鼠标朝向
- 我的第一个Retrofit小demo
- NDK_JNI 第一个完整的 小DEMO
- 我的第一个小demo
- 自己做的第一个MTV
- 第一个自己做的东西!
- 我的第一个iOS Demo
- BW 做的第一个小报表
- Android做的第一个小程序
- 自己写的第一个小网站
- 自己的第一个小项目
- 自己的第一个C++小程序
- Linux 编译器
- html盒模型margin、padding、border使用
- 自己动手写最简单的bootloader
- plsql安装
- csdn如何高亮显示代码和插入图片
- 第一个自己做的ios小demo-星座
- SparkSQL UDF 两种方式:udf() 和 register()
- 转发和重定向
- HDU 5831Rikka with Parenthesis II
- CSU Problem 1809 Parenthesis(括号匹配,线段树,前缀和)——湖南省第十二届大学生计算机程序设计竞赛
- 《机器学习》(西瓜书) 随笔
- CSS3:实现图片轮播
- PyCharm快捷键
- 51nod-1103 N的倍数(抽屉原理)