本篇内容主要讲解“swift怎么实现在线天气预”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“swift怎么实现在线天气预”吧!
实现功能简单,但知识点用到很多,比如微信搜索地理位置等。
// 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怎么实现在线天气预”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。