public var parameters: [String: Any]? {
var params:[String: Any] = [:] // for post params
var query:[String: Any] = [:] // for get params
}
public var parameterEncoding: ParameterEncoding {
switch self {
case .addComment, .uploadReportImage,
.addReport, .addFavorite, .getFavorites, .removeFavorite, .uploadAvatar,
.getProfile, .updateProfile, .getUserComments:
return CompositeJsonEncoding()
default:
return CompositeEncoding()
}
}
button.translatesAutoresizingMaskIntoConstraints = false
if #available(iOS 11.0, *) {
button.rightAnchor.constraint(equalTo: tableView.safeAreaLayoutGuide.rightAnchor, constant: -10).isActive = true
button.bottomAnchor.constraint(equalTo: tableView.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
}
let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
let urlRequest = URLRequest(url: videoURL!)
urlSession.dataTask(with: urlRequest) { (data, _, error) in
var data = data
data.resetBytes(in: data.startIndex...data.index(after: data.startIndex))
print("got mp4 file")
let movie = AVMovie(data: data!, options: nil)
let item = AVPlayerItem(asset: movie)
let player = AVPlayer(playerItem: item)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
DispatchQueue.main.async {
playerLayer.frame = self.view.bounds
self.view.layer?.addSublayer(playerLayer)
player.play()
}
}.resume()
prepare(for segue: UIStoryboardSegue, sender: Any?)
уже завершает свою работу. Вариантов два. Делать запрос, до вызова метода self.performSegue(withIdentifier: "sucsessLoginSegue", sender: self)
и уже воспользоваться результатом вызова в prepare(for segue: UIStoryboardSegue, sender: Any?)
. Либо делать запрос уже после перехода на новый VC. init(animal_title: [String], animal_about: [String]){
self.animalName = animal_title
self.animalAbout = animal_about
}
private enum CodingKeys: String, CodingKey {
case animalName = "animal_title"
case animalAbout = "animal_about"
}
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
UITabBarItem
и UITabBarController
. Переопределеют нужные св-ва и методы. В первую очередь переопределить св-во selectedItems
на свой подкласс и методы выбора по нажатию, добавив в них layer
анимацию. path
залив его цветом .clear
. Путь - круг и идущая от него линия. Причём, если элемент самый крайний, то линия ток слева или справа, для остальных она в обе стороны. Останется добавить лишь strokeEndAnimation
, которая будет заливать цветом этот путь идя от начало пути в конец. Об этом хорошо написано тут: https://www.calayer.com/core-animation/2017/12/25/...