Привет, любители аниме и разработчики SwiftUI!
Сегодня мы собираемся создать забавное и простое в использовании аниме-приложение, которое будет отображать случайные цитаты из ваших любимых шоу с помощью API Animechan! 🚀
Приготовьтесь посмеяться над легкими аниме-шутками и насладитесь этим 5-минутным чтением. Давайте погрузимся и создадим наш собственный диспенсер аниме-цитатов! 😂
Начало работы: настройка проекта 🏁
Сначала создайте новый проект SwiftUI в Xcode и дайте ему подходящее имя — например, «AnimeQuotes» или «QuoteDōjō»! 🥋
Теперь давайте возьмем в свои руки эти сочные цитаты из аниме, используя API Animechan. Мы будем использовать две конечные точки:
- Случайная цитата: https://animechan.vercel.app/api/random
- Случайная цитата из определенного аниме: https://animechan.vercel.app/api/random/anime?title=naruto
Дополнительную информацию об API можно найти на странице https://animechan.vercel.app.
Нетворкинг как ниндзя 🐱👤
Пришло время создать сетевой уровень для получения котировок из API Animechan. Создадим класс QuoteAPI
:
import Foundation class QuoteAPI { let baseURL = "https://animechan.vercel.app/api" func getRandomQuote(completion: @escaping (AnimeQuote?) -> Void) { let urlString = "\(baseURL)/random" fetchData(urlString: urlString, completion: completion) } func getRandomQuote(fromAnime title: String, completion: @escaping (AnimeQuote?) -> Void) { let urlString = "\(baseURL)/random/anime?title=\(title)" fetchData(urlString: urlString, completion: completion) } private func fetchData(urlString: String, completion: @escaping (AnimeQuote?) -> Void) { guard let url = URL(string: urlString) else { completion(nil) return } URLSession.shared.dataTask(with: url) { data, response, error in if let data = data, error == nil { let quote = try? JSONDecoder().decode(AnimeQuote.self, from: data) completion(quote) } else { completion(nil) } }.resume()
Отлично, наш сетевой ниндзя готов к действию! 🌟
Чтобы узнать больше, ознакомьтесь с этими книгами на Amazon:
Руководство по выживанию инженеров
Создание пользовательского интерфейса: отображение цитат как босс 📱
Давайте создадим привлекательный пользовательский интерфейс для отображения котировок. Мы начнем с простого представления QuoteCard
:
import SwiftUI struct QuoteCard: View { let quote: AnimeQuote var body: some View { VStack(alignment: .leading, spacing: 10) { Text(quote.anime) .font(.title) .bold() .foregroundColor(.red) Text("\"\(quote.quote)\"") .font(.headline) .italic() Text("- \(quote.character)") .font(.subheadline) .fontWeight(.medium) .foregroundColor(.gray) } .padding() .background(Color(.systemGray6)) .cornerRadius(10) .shadow(radius: 5) } }
Теперь давайте создадим основной ContentView
:
import SwiftUI struct ContentView: View { @State private var quote: AnimeQuote? @State private var animeTitle: String = "" private let quoteAPI = QuoteAPI() var body: some View { VStack { TextField("Enter anime title", text: $animeTitle) .textFieldStyle(RoundedBorderTextFieldStyle()) .padding() if let quote = quote { QuoteCard(quote: quote) } else { Text("No quote yet") .font(.headline) .foregroundColor(.gray) } Spacer() Button(action: fetchRandomQuote) { Text("Get Random Quote") .bold() .padding() .background(Color.red) .foregroundColor(.white) .cornerRadius(10) } } .padding() .onAppear(perform: fetchRandomQuote) } private func fetchRandomQuote() { if animeTitle.isEmpty { quoteAPI.getRandomQuote { fetchedQuote in DispatchQueue.main.async { self.quote = fetchedQuote } } } else { quoteAPI.getRandomQuote(fromAnime: animeTitle) { fetchedQuote in DispatchQueue.main.async { self.quote = fetchedQuote }
Этот ContentView
содержит текстовое поле для ввода пользователем названия аниме, отображает полученную цитату с помощью QuoteCard
и имеет кнопку для получения новой цитаты. Наше приложение готово к работе! 🎉
Подведение итогов: экстраординарное аниме-приложение 🏆
Поздравляем! Вы успешно создали приложение SwiftUI для извлечения цитат из аниме, используя API Animechan! 🎊 Теперь ваше приложение наполнено мудростью (а иногда и весельем) от ваших любимых аниме-персонажей! 🤣
Чтобы узнать больше, ознакомьтесь с этими книгами на Amazon:
Руководство по выживанию инженеров
Так что давай, похлопай себя по плечу и поделись со всем миром своими новообретенными знаниями об аниме-цитатах! 🌍
Я являюсь партнером Amazon, и в этом сообщении есть партнерские ссылки. Это означает, что если вы совершите покупку после нажатия на одну из них, я могу получить комиссию.