Wpis z mikrobloga

zaczynam przygodę ze #switfui / #swift

i na dzień dobry mam zagwozdkę,

jaką właściwie wybrać strukturę katalogów?

Apka będzie wyglądać jak ta sekcja z allegro:
https://i.imgur.com/APl9yp5_d.webp?maxwidth=760&fidelity=grand
czyli logo na górze, potem trzy menu, pośrodku content i na dole znów TabView

https://developer.apple.com/forums/thread/710501

vs

https://www.hackingwithswift.com/books/ios-swiftui/introducing-mvvm-into-your-swiftui-project

To w końcu lubimy MVVM czy nie?
  • 24
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@qwelukasz: Na Swifcie leć w MVVM/MVVM-C
Odnośnie SwiftUI, to minimalny sensowny target to iOS 14, poniżej tego nie ma co schodzić, bo się pochlastasz zanim zrobisz coś sensownego.
Musiałbym dokładnie przeczytać artykuł tego kolesia na temat tego, że SwiftUI nie dogaduje się z MVVM, ale u siebie w produkcie produkcyjnym taki zestaw mam i polecam.
Możesz też rozważyć np. UIKit. Mniej nowocześnie, ale można uznać że bezpieczniej, bo dużo więcej
  • Odpowiedz
@qwelukasz: Główna kwestia jak zrobić foldery w projekcie, to tak aby było wygodnie. To i tak nie ma wpływu na czas kompilacji. A plik pbxproj i tak będzie wyglądał tragicznie.
Sam mam w projekcie podzielone po features. W tym zazwyczaj folder viewModels pod modele, views pod widoku, resources pod assety i helpers pod dodatki w stylu serwisu sieciowego.
Ale najważniejsze to jest aby Ci się wygodnie po tym poruszało.
Jeśli
  • Odpowiedz
  • 0
@Prism2772:

Tabcontroller to da solna sekcja. Mnie zastanawia jak najlepiej zrobić ta górna gdzie masz napis „moje Allegro” oraz zakupy / lokalne / konto
Tylko dolna cześć byłaby dynamiczna w zależności od widoku

Pokażesz przykład jak zrobić jakiś prosty extension widoku? Na przykładzie tego top banner - albo jakiś link do tutoriala
  • Odpowiedz
  • 0
@Prism2772: I jeszcze jedno mi powiedz. Załóżmy ze mam jakiś customowy font w apce. Chce aby każdy tect/button go używał.
Musze do każdego elementu ustawiać font, zrobić swój komponent rozszerzając ten domyślny czy da się jakoś globalnie ustawić ze ma być wszędzie Comic-Sans? ;)
  • Odpowiedz
Musze do każdego elementu ustawiać font, zrobić swój komponent rozszerzając ten domyślny czy da się jakoś globalnie ustawić ze ma być wszędzie Comic-Sans? ;)


@qwelukasz: tak jak piszesz - najlepiej zrobić swój komponent rozszerzający istniejący.

Mnie zastanawia jak najlepiej zrobić ta górna gdzie masz napis „moje Allegro” oraz zakupy / lokalne / konto

Tak naprawdę mogą to być nawet 3 zwykłe buttony. Zawartości tych zakładek pod nimi zawierasz w oddzielnych
  • Odpowiedz
  • 0
@Prism2772: Tabman to jest to czego szukałem! Dzięki

co do fragmentów kodu,

jeśli to nie problem dla Ciebie to bardzo pomocny dla mnie byłby jakiś prosty MVVC gdzie masz:
kontroler / widok + fetchowanie danych
  • Odpowiedz
@qwelukasz: MVC czy MVVM? :D
Jeśli chodzi o taką apkę, która musi fetchować dane co 5 minut, czy ogólnie musi mieć świeże po odpaleniu, to nawet bym nie myślał aby angażować CoreData

Wrzucasz w jakąś zmienną w kodzie(najlepiej jakiś data source, który jest wywoływany z view modelu) i na podstawie tego data source możesz operować tymi danymi jak potrzebujesz

Nie wiem czy sam to ogarnę, bo jednak to jest chwila aby
  • Odpowiedz
  • 0
@Prism2772: siema, to znowu ja ;-)

Powiedz mi jeszcze, czeog używasz do odtwarzania wideo? Testuję AVPlayer ale mam z nim drobne problemy, np nie wiem jak zrobić aby po wyściu z pełnego ekranu nadal odtwarzało się wideo (obecnie się zatrzymuje)
  • Odpowiedz
@qwelukasz: AVPlayera, ale akurat w apce nad którą pracuje nie mam zaimplementowanego full screena. Z tego co pamiętam to chyba delegat jest w stanie wykryć wyjście z full screena i wtedy można odpalić znowu odtwarzanie. Piszę z głowy więc dokładnie nie pamiętam. Jakby nie udało Ci się znaleźć to daj znać, będąc przy kompie poszukam rozwiązania
  • Odpowiedz
  • 0
@Prism2772: zobacz prosze, dzisiaj caly dzien nad tym gownem siedzialem i nie dziala mi to
tyle mam poki co

struct VideoPlayerView: UIViewControllerRepresentable {
let videoUrl:
  • Odpowiedz
@qwelukasz: Ten fragment kodu

controller.exitsFullScreenWhenPlaybackEnds = true
Nie oznacza, że w momencie kiedy zakończy się odtwarzanie elementu, to wtedy automatycznie wyjdzie z full screena. Nie mówi nic o zachowaniu jakie ma się zdarzyć po wyjściu użytkownika z odtwarzacza.
Spróbuj zrobić coś
  • Odpowiedz