温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

swift怎么实现在线天气预

发布时间:2022-01-04 10:44:05 来源:亿速云 阅读:127 作者:iii 栏目:移动开发

本篇内容主要讲解“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怎么实现在线天气预”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI