Ho implementato tale classe:@available con le versioni iOS pre-disponibili - proprietà mancanti
class MapLayoutGuide: NSObject, UILayoutSupport {
var insetLength: CGFloat = 0
init(insetLength: CGFloat) {
self.insetLength = insetLength
}
var length: CGFloat {
return insetLength
}
}
Tutto stava funzionando bene, però ci sono stati nuovi modifiche introdotte con la nuova versione di iOS: Apple changelog.
Così ora sto ricevendo 3 errori:
Protocol requires property 'topAnchor' with type 'NSLayoutYAxisAnchor'
,Protocol requires property 'bottomAnchor' with type 'NSLayoutYAxisAnchor'
,Protocol requires property 'heightAnchor' with type 'NSLayoutDimension'
.
Guardando in UILayoutSupport
implementazione posso vedere nuove variabili:
@available(iOS 9.0, *)
var topAnchor: NSLayoutYAxisAnchor { get }
@available(iOS 9.0, *)
var bottomAnchor: NSLayoutYAxisAnchor { get }
@available(iOS 9.0, *)
var heightAnchor: NSLayoutDimension { get }
La mia app è iOS 8.0+
. Quindi la domanda è: cosa dovrei fare con questi valori? Non riesco a impostare il flag @available
e voglio che il codice funzioni entrambi con iOS 8
e 9
, ma devo sovrascriverlo. Nessuna idea su cosa farne.
Il codice utilizzato per funzionare ieri su Xcode Beta 1
, che cosa non ha importanza atm come voglio che funzioni su API corrente non precedente.
Il '@ available' vi tel voi da quale versione di iOS il metodo/proprietà/classe è disponibile, questo' @available (iOS 9.0, *) 'significare disponibile solo su iOS 9 o superiore. Quindi non è possibile chiamare questi metodi in iOS 8. – rckoenes
@rckoenes Questo lo so, ma devo anche sovrascriverlo (leggere gli errori). Ora la domanda è come implementarla in modo che funzioni sia su iOS 9 sia su iOS 8. Rileggi la domanda, specialmente quella precedente all'ultimo paragrafo (o se la mia domanda non è chiara spero che lo sia). – Vive
Scusa, sì, ora capisco. in iOS 9 questi getter sono obbligatori e devono essere implementati. Se li implementate, dovrebbero funzionare in iOS 8 poiché non li chiama. – rckoenes