Sobes.tech

struct CustomButtonStyleView: View { var body: some View { VStack { Button("Button") { print("Tapped") } } .buttonStyle(CustomButtonStyle()) } } private struct CustomButtonStyle: ButtonStyle { func makeBody(configuration: Configuration) -> some View { configuration.label .padding() .foregroundColor(.white) .frame(maxWidth: .infinity) .background(Color.red) .clipShape(RoundedRectangle(cornerRadius: 8)) } }

Senior
Salmon
35

Cum funcționează sistemul de design între UIKit și SwiftUI — există duplicare de componente sau învelișuri?

Senior
Salmon
35

```swift struct CustomButtonStyleView: View { var body: some View { VStack { Button("Button") { print("Tapped") } .buttonStyle(CustomButtonStyle()) } } } private struct CustomButtonStyle: ButtonStyle { func makeBody(configuration: Configuration) -> some View { configuration.label .padding() .foregroundColor(.white) .background(Color.red) .clipShape(RoundedRectangle(cornerRadius: 8)) } } ``` ```swift struct CustomButtonStyleView: View { var body: some View { VStack { Button("Button") { print("Tapped") } .buttonStyle(CustomButtonStyle()) } } } private struct CustomButtonStyle: ButtonStyle { func makeBody(configuration: Configuration) -> some View { configuration.label .padding() .foregroundColor(.white) .frame(maxWidth?) .background(Color.red) .clipShape(RoundedRectangle(cornerRadius: 8)) } } ``` ```swift struct CustomButtonStyleView: View { var body: some View { VStack { Button("Button") { print("Tapped") } .buttonStyle(CustomButtonStyle()) } } } private struct CustomButtonStyle: ButtonStyle { func makeBody(configuration: Configuration) -> some View { configuration.label //.padding() //.foregroundColor(.white) .frame(maxWidth: .infinity) .background(Color.red) //.clipShape(RoundedRectangle(cornerRadius: 8)) } } ``` ```swift struct CustomButtonStyleView: View { var body: some View { VStack { Button("Button") { print("Tapped") } .buttonStyle(CustomButtonStyle()) .frame(width: 200) } } } private struct CustomButtonStyle: ButtonStyle { func makeBody(configuration: Configuration) -> some View { configuration.label //.padding() //.foregroundColor(.white) .frame(maxWidth: .infinity) .background(Color.red) //.clipShape(RoundedRectangle(cornerRadius: 8)) } } ``` Se pare că scopul este de a personaliza un stil de buton SwiftUI, experimentând cu diferiți modificatori precum padding, culoarea de prim plan, lățimea cadrului, culoarea de fundal și forma de decupare. Probabil, întrebarea implică corectarea sau îmbunătățirea stilului butonului pentru a obține un aspect sau comportament dorit, cum ar fi umplerea întregii lățimi disponibile sau ajustarea stilului vizual.

Senior
Salmon
35

Ce se întâmplă când nil este transmis la set?

Middle+
RevolutRevolut
34

Folosiți în prezent GCD sau Modern Concurrency (async/await) pentru sarcini noi legate de fire?

Senior
Salmon
32

Când ai venit în proiect, era deja Swift 6 sau tranziția a avut loc în timpul tău?

Senior
Salmon
31

```swift struct ContentView: View { var body: some View { ScrollView { content .padding(20) } .background(Color(.systemGroupedBackground)) .overlay(alignment: .bottom) { continueButton } } } ``` ```swift struct ContentView: View { var body: some View { ScrollView { content .padding(20) } .background(Color(.systemGroupedBackground)) .safeAreaInset(edge: .bottom) { continueButton } } } ```

Senior
Salmon
31

Au fost probleme cu concurența (Sendable, Sendable nesigur, trecerea între actori) în modulele cu care ați lucrat direct?

Senior
Salmon
31

@MainActor final class ViewModel: ObservableObject { @Published var image: UIImage? func onDownloadPhoto(url: URL) { do { let data = try Data(contentsOf: url) image = UIImage.init(data: data) } catch { log.error("Eșec la descărcarea imaginii: \(error)") } } } Button("Descarcă") { onDownloadPhoto(url) }

Senior
Salmon
31

Există alte macro-uri în proiect în afară de stratul de rețea?

Senior
Salmon
30

protocol SomeProtocol { func test() } func test1_1(valor: SomeProtocol) {} func test1_2(valor: any SomeProtocol) {} func test2_1(valor: some SomeProtocol) {} func test2_2<Valoare: SomeProtocol>(valor: Valoare) {} class A { func test2_2<Valoare: SomeProtocol>(valor: Valoare) { } } class B: SomeProtocol { func test() {} } class C: B {} A().test2_2(valor: B())

Senior
Salmon
29

Prezintă-te pe scurt și descrie-ți munca actuală.

Middle+
RevolutRevolut
28

Ce se folosește pentru modulele de prezentare în UIKit și SwiftUI — ce arhitectură?

Senior
Salmon
28

Când și cum are loc anularea atunci când se folosește DispatchQueue cu WorkItem și se apelează cancel()?

Senior
Salmon
27

Au fost sesiuni sau cadre interesante la ultima WWDC pe care ai dori să le încerci în munca ta?

Senior
Salmon
27

protocol CacheProtocol { associatedtype Value func setValue(_ value: Value?, forKey key: String) func getValue(forKey key: String) -> Value? func fetchValue(forKey key: String, completion: @escaping (Value?) -> Void) } final class Cache<T>: CacheProtocol { private var storage: [String: T] = [:] func setValue(_ value: T?, forKey key: String) { storage[key] = value } func getValue(forKey key: String) -> T? { return storage[key] } func fetchValue(forKey key: String, completion: @escaping (T?) -> Void) { let value = storage[key] completion(value) } } import XCTest final class CacheTests: XCTestCase { override func setUp() { super.setUp() } func testSetAndGetValue() { let cache = Cache<String>() let key: String = "key" let value: String = "value" cache.setValue(value, forKey: key) XCTAssertEqual(cache.getValue(forKey: key), value) cache.setValue(nil, forKey: key) XCTAssertTrue(cache.getValue(forKey: key) == nil) } } CacheTests.defaultTestSuite.run()

Middle+
RevolutRevolut
26

Dacă implementezi un ecran nou sau o funcție nouă, scrii imediat în SwiftUI, sau există discuții despre alegerea între UIKit și SwiftUI?

Senior
Salmon
26

Vorbește despre Property Wrapper-urile utile pe care le-ai folosit în proiect

Senior
Salmon
26

Vorbește-mi mai detaliat despre ultimul tău proiect — modulul de galerie foto de pe Avito, pentru care ai fost responsabil (închiriere pe termen scurt, formular de rezervare etc.)

Senior
Salmon
26

Dacă ai proiecta un component reutilizabil de buton pentru un sistem de design în SwiftUI cu stiluri diferite (primar/secundar), cum l-ai implementa?

Senior
Salmon
25
/206