iOS毕业设计之天气预报App

2020-01-18 16:35:41王旭

4、当然要接受到JSON数据要调用下面的方法,并且传入带有你要的数据的字典


//创建NSDictionary
NSData *JSONData = ...//接口的响应数据
NSDictionary *JSONDict = [NSJSONSerialization JSONObjectWithData: JSONData options: 0 error: nil];

//使用MTLJSONSerialization创建模型对象
CATProfile *profile = [MTLJSONAdapter modelOfClass: CATProfile.class fromJSONDictionary: JSONDict error: NULL];

经过重复的练习,熟悉了用Mantle把JSON数据转模型之后,我就开始搭建App的UI了

第三步,建立天气预报页面(展示天气页面)

iOS毕业设计天气预报App,iOS天气预报App,iOS天气预报

iOS毕业设计天气预报App,iOS天气预报App,iOS天气预报

iOS毕业设计天气预报App,iOS天气预报App,iOS天气预报

这里主要懒加载了一个backgroundView作为背景图片,一个tableView以及多个XIB文件做成的Cell组成,我参考手机上自带的天气App做了一点美化,就是添加一个tableHeaderView,然后在上面添加一个ScrollView,在ScrollView上显示城市和日期,达到它一直悬浮在最上层的效果,下面的cell都在它底下滑过。(后来发现其实这里可以不添加tableHeaderView,把tableView的位置下移就好了。。。)

=====================10.12日编辑==============================

对界面进行了调整,继续ing。。。 

第四步,创建UIpagecontrol

基本定好天气预报信息如何展示之后,就要想,怎么展示多个天气页面呢?为了实现这个需求,我想到了用UIpagecontrol
这里主要用到一下属性和方法


@property(nonatomic,strong) NSMutableArray *viewControllerArr;  // 存放视图的数组
@property(nonatomic,assign) NSInteger curPage ;      // 记录当前
@property(nonatomic,assign) NSInteger totalPages ;     // 记录总页数

// ***翻页方法
// 往后翻
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController{
 self.curPage = ((ViewController *)viewController).page;
 UIImage *bgImg = [self createImageWithColor:((ViewController *)viewController).view.backgroundColor];
 [self.navigationController.navigationBar setBackgroundImage:bgImg forBarMetrics:UIBarMetricsDefault];
 self.pageControl.currentPage = self.curPage;
 if (self.curPage < self.totalPages - 1 && self.curPage != self.totalPages) {
  return self.viewControllerArr[self.curPage + 1];
 }else{
  return nil;
 }
}

// 往前翻
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController{
 self.curPage = ((ViewController *)viewController).page;
 UIImage *bgImg = [self createImageWithColor:((ViewController *)viewController).view.backgroundColor];
 [self.navigationController.navigationBar setBackgroundImage:bgImg forBarMetrics:UIBarMetricsDefault];
 self.pageControl.currentPage = self.curPage;
 if (self.curPage > 0 && self.curPage != self.totalPages) {
  return self.viewControllerArr[self.curPage - 1];
 }else{
  return nil;
 }
}