最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS畢業(yè)設(shè)計之天氣預(yù)報App

 更新時間:2016年10月12日 14:30:37   作者:tutu的dudu  
這篇文章主要為大家詳細介紹了iOS畢業(yè)設(shè)計之天氣預(yù)報App,具有一定的參考價值,感興趣的小伙伴們可以參考一下

9月中旬,開始動手做我的畢業(yè)設(shè)計了,之前一直在糾結(jié)做啥,后來想想,既然是做畢業(yè)設(shè)計,那就大膽地做點自己沒接觸過的東西吧。然后網(wǎng)上查找資料得知做天氣預(yù)報需要用到開放的API,而且要用那種現(xiàn)在還在維護的,而且又免費的(對于我們學(xué)生黨來說,這個是挺好的)。天氣預(yù)報App的核心是從天氣API請求數(shù)據(jù),請求得到的一般是JSON數(shù)據(jù)(這個JSON數(shù)據(jù)之前都沒接觸過),然后把JSON數(shù)據(jù)解析,然后在視圖上顯示出來。總得來說,這里應(yīng)該涉及到“網(wǎng)絡(luò)請求”,“JSON解析”這兩個大塊吧,正好用來學(xué)習(xí)新的東西,并且練練手,于是就決定做個天氣預(yù)報的App了。

第一步,找天氣API
各種百度,然后找到了比較新的網(wǎng)站,分別是“心知天氣”和“和風天氣”。都需要注冊,注冊之后會得到一個key,用來進行數(shù)據(jù)請求的。兩個網(wǎng)站都有付費和免費的兩種選擇,如圖,比較完之后,二話不說,選擇了和風天氣的API。

 

 

第二步,找解析JSON的第三方框架
各種百度之后也找到了大家推薦的一些,如:JSONKit、Mantle、AFNetworking、SBJSON、MJExtension等等等等。。。最后參考一篇教程,還是選擇了Mantle,當然不是說其他不好用,個人喜好而已。
Mantle的使用也很簡單。
1、新建一個繼承自MTLModel的類,并讓他遵循<MTLJSONSerializing>協(xié)議,注意這里還要#import <MTLModel.h>
2、在.h文件定義你的模型,如:

#import <Mantle/Mantle.h>
#import <MTLModel.h>

@interface TSCondition : MTLModel<MTLJSONSerializing>

@property (nonatomic, strong) NSString *cityName;  // 城市名字
@property (nonatomic, strong) NSString *nowCond;  // 當前天氣狀況
@property (nonatomic, strong) NSString *nowTmp;   // 當前溫度
@property (nonatomic, strong) NSString *winddir;  // 風向
@property (nonatomic, strong) NSString *windsc;   // 風力
@property (nonatomic, strong) NSString *date;   // 日期
@property (nonatomic, strong) NSString *maxTmp;   // 最高溫度
@property (nonatomic, strong) NSString *minTmp;   // 最低溫度
@property (nonatomic, strong) NSString *weatherqlty; // 空氣質(zhì)量


@end

3、在.m文件中實現(xiàn)類方法,實現(xiàn)JSON數(shù)據(jù)到模型的映射

+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
 return @{
    @"cityName": @"basic.city",
    @"nowCond": @"now.cond.txt",
    @"nowTmp": @"now.tmp",
    @"winddir": @"now.wind.dir",
    @"windsc": @"now.wind.sc",
    @"date": @"basic.update.loc",
    @"maxTmp": @"daily_forecast.tmp.max",
    @"minTmp": @"daily_forecast.tmp.min",
    @"weatherqlty": @"aqi.city.qlty"
    };
}

4、當然要接受到JSON數(shù)據(jù)要調(diào)用下面的方法,并且傳入帶有你要的數(shù)據(jù)的字典

//創(chuàng)建NSDictionary
NSData *JSONData = ...//接口的響應(yīng)數(shù)據(jù)
NSDictionary *JSONDict = [NSJSONSerialization JSONObjectWithData: JSONData options: 0 error: nil];

//使用MTLJSONSerialization創(chuàng)建模型對象
CATProfile *profile = [MTLJSONAdapter modelOfClass: CATProfile.class fromJSONDictionary: JSONDict error: NULL];

經(jīng)過重復(fù)的練習(xí),熟悉了用Mantle把JSON數(shù)據(jù)轉(zhuǎn)模型之后,我就開始搭建App的UI了

第三步,建立天氣預(yù)報頁面(展示天氣頁面)


這里主要懶加載了一個backgroundView作為背景圖片,一個tableView以及多個XIB文件做成的Cell組成,我參考手機上自帶的天氣App做了一點美化,就是添加一個tableHeaderView,然后在上面添加一個ScrollView,在ScrollView上顯示城市和日期,達到它一直懸浮在最上層的效果,下面的cell都在它底下滑過。(后來發(fā)現(xiàn)其實這里可以不添加tableHeaderView,把tableView的位置下移就好了。。。)

=====================10.12日編輯==============================

對界面進行了調(diào)整,繼續(xù)ing。。。 

第四步,創(chuàng)建UIpagecontrol

基本定好天氣預(yù)報信息如何展示之后,就要想,怎么展示多個天氣頁面呢?為了實現(xiàn)這個需求,我想到了用UIpagecontrol
這里主要用到一下屬性和方法

@property(nonatomic,strong) NSMutableArray *viewControllerArr;  // 存放視圖的數(shù)組
@property(nonatomic,assign) NSInteger curPage ;      // 記錄當前
@property(nonatomic,assign) NSInteger totalPages ;     // 記錄總頁數(shù)

// ***翻頁方法
// 往后翻
-(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;
 }
}

第五步,添加城市,使用searchBar

實現(xiàn)這個需求,我選擇在navigationBar 上添加一個按鈕,跳轉(zhuǎn)到一個帶搜索欄的視圖,實現(xiàn)輸入城市名字,添加天氣頁面的功能
這里的難點是,添加視圖后,UIpagecontrol的頁面添加和翻頁邏輯問題,經(jīng)過一段時間努力還是解決了。

第六步,添加第三方側(cè)欄LLSlideMenu

我想使用這個側(cè)欄管理天氣頁面,因為我是用一個數(shù)組存儲城市名字去加載天氣頁面的,所以我的思路是,在側(cè)欄里面添加一個tableview,然后把數(shù)組的每一個元素顯示上去,然后實驗tableviewcell的編輯方法,達到移除相應(yīng)的cell,即刪除相應(yīng)的城市名字和城市頁面。


未完待續(xù),不要錯過。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS屏幕旋轉(zhuǎn)與鎖屏的示例代碼

    iOS屏幕旋轉(zhuǎn)與鎖屏的示例代碼

    這篇文章主要介紹了iOS屏幕旋轉(zhuǎn)與鎖屏的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • IOS定制屬于自己的個性頭像

    IOS定制屬于自己的個性頭像

    這篇文章主要為大家介紹了IOS定制屬于自己的個性頭像,實現(xiàn)方法很簡單,感興趣的小伙伴們可以參考一下
    2016-01-01
  • iOS讀取txt文件出現(xiàn)中文亂碼的解決方法

    iOS讀取txt文件出現(xiàn)中文亂碼的解決方法

    這篇文章主要為大家詳細介紹了iOS讀取txt文件出現(xiàn)中文亂碼的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS實現(xiàn)動態(tài)的開屏廣告示例代碼

    iOS實現(xiàn)動態(tài)的開屏廣告示例代碼

    啟動圖是在iOS開發(fā)過程中必不可少的一個部分,很多app在啟動圖之后會有一張自定義的開屏廣告圖,但是有的時候需要讓啟動圖看起來就是一個廣告,而且還要這個廣告里面會動,iOS的啟動圖只能是靜態(tài)的,而且固定,為了實現(xiàn)看起來的動畫效果,只能進行偽造了。下面來一起看看
    2016-09-09
  • 詳解iOS 用于解決循環(huán)引用的block timer

    詳解iOS 用于解決循環(huán)引用的block timer

    這篇文章主要介紹了詳解iOS 用于解決循環(huán)引用的block timer,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • iOS系統(tǒng)的底層通知框架庫示例詳解

    iOS系統(tǒng)的底層通知框架庫示例詳解

    這篇文章主要給大家介紹了關(guān)于iOS系統(tǒng)的底層通知框架庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • iOS像素對齊概念解析

    iOS像素對齊概念解析

    這篇文章主要為大家詳細介紹了iOS像素對齊概念,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS開發(fā)中Quartz2D繪圖路徑的使用以及條紋效果的實現(xiàn)

    iOS開發(fā)中Quartz2D繪圖路徑的使用以及條紋效果的實現(xiàn)

    這篇文章主要介紹了iOS開發(fā)中Quartz2D繪圖路徑的使用以及條紋效果的實現(xiàn),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-11-11
  • iOS?組件化初步構(gòu)思

    iOS?組件化初步構(gòu)思

    這篇文章主要介紹了iOS組件化初步構(gòu)思,并對iOS組件化常用方式的討論進行了方案分析,以便幫助大家對ios組件化有一個深刻的了解
    2023-03-03
  • ios實現(xiàn)文件對比的方法

    ios實現(xiàn)文件對比的方法

    這篇文章主要介紹了ios實現(xiàn)文件對比的方法,主要是用到了filemanager,有需要的小伙伴可以參考下。
    2015-05-05

最新評論

昆山市| 石林| 广丰县| 永泰县| 延边| 田林县| 安乡县| 阳原县| 盘山县| 体育| 泗洪县| 隆林| 沙田区| 繁昌县| 林芝县| 会昌县| 琼结县| 苏州市| 汉源县| 西藏| 兴隆县| 兴化市| 耿马| 崇明县| 双鸭山市| 阿城市| 南靖县| 社旗县| 买车| 垣曲县| 湖口县| 江北区| 汝阳县| 罗源县| 东阿县| 司法| 大余县| 安丘市| 临湘市| 民权县| 康乐县|