本篇内容主要讲解“swift怎么实现在线天气预”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“swift怎么实现在线天气预”吧!
创新互联专业为企业提供通化网站建设、通化做网站、通化网站设计、通化网站制作等企业网站建设、网页设计与制作、通化企业网站模板建站服务,10多年通化做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
实现功能简单,但知识点用到很多,比如微信搜索地理位置等。
// ViewController.swift // WeatherApp // 文启领航培训 // bjflexedu.com // qq:376610000 import UIKit import CoreLocation class ViewController: UIViewController,CLLocationManagerDelegate { @IBOutlet var cityName : UILabel @IBOutlet var icon : UIImageView @IBOutlet var tempTxt : UILabel @IBOutlet var busy : UIActivityIndicatorView @IBOutlet var messageInfo : UILabel let locationManage:CLLocationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() busy.startAnimating() let img = UIImage(named: "background.jpg") self.view.backgroundColor = UIColor(patternImage: img) locationManage.delegate = self locationManage.desiredAccuracy = kCLLocationAccuracyBest locationManage.requestAlwaysAuthorization() locationManage.startUpdatingLocation() } func locationManager(manager: CLLocationManager!, didUpdateLocations locations: AnyObject[]!){ var location = locations[locations.count-1] as CLLocation if location.horizontalAccuracy > 0{ let latitude = location.coordinate.latitude let longitude = location.coordinate.longitude self.updateWeatherData(latitude,longitude:longitude) locationManage.stopUpdatingLocation() } } func updateWeatherData(latitude:CLLocationDegrees,longitude:CLLocationDegrees){ let url = "http://api.openweathermap.org/data/2.5/weather" let params = ["lat":latitude,"lon":longitude,"cnt":0] let manage = AFHTTPRequestOperationManager() let success = { (operation:AFHTTPRequestOperation!, response:AnyObject!) -> Void in //println(response) self.busy.stopAnimating() self.busy.hidden = true self.messageInfo.text = nil //name let jsonResult:NSDictionary = response as NSDictionary self.cityName.text = jsonResult["name"]? as String var tempNum:Double if let tempValue = jsonResult["main"]?["temp"]? as? Double{ tempNum = round(tempValue - 273.15) self.tempTxt.text = "\(tempNum) " } let idCon = (jsonResult["weather"]? as NSArray)[0]?["id"]? as? Int let nowTime = NSDate().timeIntervalSince1970 let sunrise = jsonResult["sys"]?["sunrise"]? as? Double let sunset = jsonResult["sys"]?["sunset"]? as? Double var nightTime = false//true 表示黑夜;false表示白天 if nowTime < sunrise || nowTime > sunset{ nightTime = true }else{ nightTime = false } self.updateIcon(idCon!,nightTime:nightTime) } let failure = { (operation:AFHTTPRequestOperation!, error:NSError!) -> Void in println("\(error)") self.messageInfo.text = "远程数据取不到" } manage.GET(url, parameters: params, success: success, failure: failure) } func updateIcon(condition:Int,nightTime:Bool){ if (condition < 300) { if nightTime { self.icon.p_w_picpath = UIImage(named: "tstorm1_night") } else { self.icon.p_w_picpath = UIImage(named: "tstorm1") } } // Drizzle else if (condition < 500) { self.icon.p_w_picpath = UIImage(named: "light_rain") } // Rain / Freezing rain / Shower rain else if (condition < 600) { self.icon.p_w_picpath = UIImage(named: "shower3") } // Snow else if (condition < 700) { self.icon.p_w_picpath = UIImage(named: "snow4") } // Fog / Mist / Haze / etc. else if (condition < 771) { if nightTime { self.icon.p_w_picpath = UIImage(named: "fog_night") } else { self.icon.p_w_picpath = UIImage(named: "fog") } } // Tornado / Squalls else if (condition < 800) { self.icon.p_w_picpath = UIImage(named: "tstorm3") } // Sky is clear else if (condition == 800) { if (nightTime){ self.icon.p_w_picpath = UIImage(named: "sunny_night") // sunny night? } else { self.icon.p_w_picpath = UIImage(named: "sunny") } } // few / scattered / broken clouds else if (condition < 804) { if (nightTime){ self.icon.p_w_picpath = UIImage(named: "cloudy2_night") } else{ self.icon.p_w_picpath = UIImage(named: "cloudy2") } } // overcast clouds else if (condition == 804) { self.icon.p_w_picpath = UIImage(named: "overcast") } // Extreme else if ((condition >= 900 && condition < 903) || (condition > 904 && condition < 1000)) { self.icon.p_w_picpath = UIImage(named: "tstorm3") } // Cold else if (condition == 903) { self.icon.p_w_picpath = UIImage(named: "snow5") } // Hot else if (condition == 904) { self.icon.p_w_picpath = UIImage(named: "sunny") } // Weather condition is not available else { self.icon.p_w_picpath = UIImage(named: "dunno") } } func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!){ self.messageInfo.text = "地理位置信息找不到" println("地理位置信息找不到\(error)") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
到此,相信大家对“swift怎么实现在线天气预”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!