Check this out -> Sample App
Post
Replies
Boosts
Views
Activity
I think this works. Try on simulator. Preview gives unpredictable results.
import SwiftUI
struct Amount {
var value: Decimal
var currency: CurrencyCode
}
struct ContentView: View {
@State var amount = Amount(value: Decimal(), currency: .GBP)
var body: some View {
CurrencyAmount(title: "Some label", amount: $amount)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView(amount: Amount(value: Decimal(), currency: .GBP))
}
}
struct CurrencyAmount: View {
let title: String
let prompt: String = ""
@Binding var amount: Amount
@State var currency: CurrencyCode = .GBP
var body: some View {
HStack {
Spacer(minLength: 80)
TextField(title, value: $amount.value, format: .currency(code: amount.currency.rawValue), prompt: Text(prompt))
CurrencyPicker(selected: $currency)
Spacer(minLength: 80)
}
.onChange(of: currency) { newValue in
amount.currency = newValue
}
}
}
struct CurrencyPicker: View {
@Binding var selected: CurrencyCode
let label = "Currency"
var body: some View {
Picker(label, selection: $selected) {
ForEach(CurrencyCode.allCases) {
Text($0.rawValue)
.tag($0)
}
}
}
}
enum CurrencyCode: String, CaseIterable, Identifiable {
var id: String { self.rawValue }
case AUD, CAD, EUR, GBP, NZD, USD
}
In viewWillAppear, you are trying to trying to scroll to the first item? Does your collectionView have any data at this point?
What do you mean by moving layers around? Can you give an example?
For iOS 14, I think you have to subclass UICollectionViewListCell and override updateConfiguration(using state: UICellConfigurationState). It should work for iOS 15 also.
let cellConfiguration = UICollectionView.CellRegistration<MyCell, String>....
override func updateConfiguration(using state: UICellConfigurationState) {
super.updateConfiguration(using: state)
guard var cConfig = self.contentConfiguration?.updated(for: state) as? UIListContentConfiguration else { return }
cConfig.textProperties.colorTransformer = UIConfigurationColorTransformer { color in
state.isSelected || state.isHighlighted ? .white : .black
}
cConfig.secondaryTextProperties.colorTransformer = UIConfigurationColorTransformer { color in
state.isSelected || state.isHighlighted ? .white : .black
}
self.contentConfiguration = cConfig
guard var bConfig = self.backgroundConfiguration?.updated(for: state) else { return }
bConfig.backgroundColorTransformer = UIConfigurationColorTransformer { color in
state.isSelected || state.isHighlighted ? .systemPink : .systemGray5
}
self.backgroundConfiguration = bConfig
}
}
let cellConfigiuration = UICollectionView.CellRegistration<UICollectionViewListCell, String> { cell, indexPath, itemIdentifier in
var contentConfiguration = UIListContentConfiguration.sidebarSubtitleCell()
contentConfiguration.text = "Primary Text: \(itemIdentifier)"
contentConfiguration.secondaryText = "Secondary Text"
cell.contentConfiguration = contentConfiguration
var backgroundConfiguration = UIBackgroundConfiguration.listSidebarCell()
backgroundConfiguration.backgroundColor = .systemGray5
cell.backgroundConfiguration = backgroundConfiguration
cell.configurationUpdateHandler = { cell, state in
guard var cConfig = cell.contentConfiguration?.updated(for: state) as? UIListContentConfiguration else { return }
cConfig.textProperties.colorTransformer = UIConfigurationColorTransformer { color in
state.isSelected || state.isHighlighted ? .white : .black
}
cConfig.secondaryTextProperties.colorTransformer = UIConfigurationColorTransformer { color in
state.isSelected || state.isHighlighted ? .white : .black
}
cell.contentConfiguration = cConfig
guard var bConfig = cell.backgroundConfiguration?.updated(for: state) else { return }
bConfig.backgroundColorTransformer = UIConfigurationColorTransformer { color in
state.isSelected || state.isHighlighted ? .systemMint : .systemGray5
}
cell.backgroundConfiguration = bConfig
}
}
struct CardView: View {
@State var isFaceUp = false
var body: some View {
ZStack {
let shape = RoundedRectangle(cornerRadius: 20)
if isFaceUp {
shape.fill().foregroundColor(.white)
shape.stroke(lineWidth: 3)
Text("😀").font(.system(size: 80))
} else {
shape.fill()
}
}
.rotation3DEffect(Angle(degrees: isFaceUp ? 180 : 0), axis: (x: 0, y: 1, z: 0))
.animation(.spring(), value: isFaceUp)
.onTapGesture {
isFaceUp.toggle()
}
}
}
struct OpenTotal: Decodable {
var total: Double?
var overOdds: Int?
var underOdds: Int?
}
struct CurrentTotal: Decodable {
var total: Double?
var overOdds: Int?
var underOdds: Int?
}
Screenshot
This might help
https://www.hackingwithswift.com/quick-start/swiftui/whats-the-difference-between-observedobject-state-and-environmentobject
Could this be the possible solution:
Crashes even with iOS 14.5 simulator
Quick Help also doesn't work properly. Refactor is also broken.
Should complete installing in about 8 hours.
This one seems to be extra slow.