내가 1 뷰 컨트롤러 단순 텍스트 필드와 이미지보기를 제시하기 위해,이 문서는 텍스트 필드에 사용자 정보를 업데이트하기 위해 데이터를 사용한다 즉시 사용할 수 있지만 아바타의 경우 시간이 걸리므로 페이지가 열린 후 약 3 초 후에 이미지가 나타납니다.
아바타가 완전히 다운로드 된 후에야 페이지가 완전히 열리도록하고 싶습니다. 그래서 다운로드 페이지가 열리고 페이지가 열린 후에 로딩 페이지에서 활동 표시기를 원합니다. 우리가 Mac을 열 때처럼 모든 데이터가 표시되기 전에 먼저 활동 표시기가 있습니다.
어떻게해야합니까? 다른보기 컨트롤러를 추가해야합니까? 또는 이것을 지원하는 UI 요소가 있습니까? 활동 표시기를 사용하여 시도했지만 활동 표시기는 실행되지만 이미지는 여전히 사용할 수 없습니다. 여기에 하나 스피너 또는 진행 바, 내가
감사합니다 :)
import UIKit
class EditInfoVC: UIViewController {
@IBOutlet weak var usernameTextfield: UITextField!
@IBOutlet weak var firstnameTextfield: UITextField!
@IBOutlet weak var lastnameTextfield: UITextField!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var saveButton: UIButton!
@IBOutlet weak var avatar: UIImageView!
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
override func viewDidLoad() {
super.viewDidLoad()
// round corner
saveButton.layer.cornerRadius = saveButton.bounds.width/4.5
avatar.layer.cornerRadius = avatar.bounds.width/2
avatar.layer.masksToBounds = true
//Give title to navigation controller
self.navigationItem.title = "Update Profile"
// disable save button in the beginning
saveButton.isEnabled = false
saveButton.alpha = 0.4
//shortcut
let username = userInfo?["username"] as! String
let email = userInfo?["email"] as! String
let avatarPath = userInfo?["avatar"] as! String
let fullname = userInfo?["fullname"] as! String
let fullnameArray = fullname.characters.split {$0 == " "}.map(String.init)
let firstname = fullnameArray[0]
let lastname = fullnameArray[1]
// assign variable sebagai nilai awal
usernameTextfield.text = username
firstnameTextfield.text = firstname
lastnameTextfield.text = lastname
emailTextField.text = email
if !(avatarPath.isEmpty) {
activityIndicator.startAnimating()
let imageURL = URL(string: avatarPath)
let session = URLSession(configuration: .ephemeral)
let task = session.dataTask(with: imageURL!, completionHandler: { (data, response, error) in
DispatchQueue.main.async {
if let imageData = data {
self.avatar.image = UIImage(data: imageData)
self.activityIndicator.stopAnimating()
}
}
})
task.resume()
}
}
@IBAction func saveButtonDidPressed(_ sender: Any) {
// send data to database
}
}
}
애니메이션 및 텍스트와 함께 스피너를 표시하는 MBProgressHUD 라이브러리 사용 – Vinodh