Esiste un modo per ignorare completamente le impostazioni di tipo dinamico/dimensione carattere nelle app iOS? Voglio dire c'è un modo come una voce plist in modo che io possa disabilitare completamente. Capisco che c'è una notifica che possiamo osservare e riconfigurare il carattere ogni volta che c'è un cambiamento nelle impostazioni. Sto cercando una soluzione più semplice. Sto usando iOS8. Grazie.Ignorare il tipo dinamico in iOS: Accessibilità
risposta
Nel vostro AppDelegate
aggiuntivo:
#import <objc/runtime.h>
@implementation AppDelegate
NSString* swizzled_preferredContentSizeCategory(id self, SEL _cmd)
{
return UIContentSizeCategoryLarge; // Set category you prefer, Large being iOS' default.
}
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
Method method = class_getInstanceMethod([UIApplication class], @selector(preferredContentSizeCategory));
method_setImplementation(method, (IMP)swizzled_preferredContentSizeCategory);
...
}
Esiste una versione Swift del codice sopra? – zeeple
@zeeple Dovrebbe essere possibile. L'ho solo in Obj-C. Ho provato a convertire rapidamente in Swift 2.2, ma questo richiede l'ordinamento di tutti i tipi di selettore Swift tipico e il tipo di problemi correlati; non ho tempo per farlo ora Si prega di inviare una risposta con la tua versione Swift. –
Plz converti codice swift. – Singapore
La rapida equivalente alla risposta di @ meaning-materia si presenta come segue:
Nel vostro AppDelegate:
@objc func swizzled_preferredContentSizeCategory() -> UIContentSizeCategory {
return UIContentSizeCategory.small
}
open func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let originalMethod = class_getInstanceMethod(UIApplication.self, #selector(preferredContentSizeCategory))
let swizzledMethod = class_getInstanceMethod(C24AppDelegate.self, #selector(preferredContentSizeCategory))
method_exchangeImplementations(originalMethod, swizzled_preferredContentSizeCategory)
}
Quando provo ad usarlo, ottengo gli errori del compilatore: 'Uso dell'identificatore non risolto 'preferredContentSizeCategory''. C'è qualcos'altro che è necessario per farlo funzionare? –
La mia ipotesi migliore è stata la modifica dei selettori a 'getter: UIApplication.preferredContentSizeCategory' e' MyAppDelegate.swizzled_preferredContentSizeCategory' insieme ad un paio di altre modifiche, che hanno cancellato gli errori del compilatore ma sembra che non faccia nulla quando viene eseguito. –
tipo dinamico è qualcosa che si implementare attivamente (o almeno selezionare all'interno di Interface Builder). Non funziona * semplicemente *. –
Se vado a cambiare la dimensione del carattere nell'app delle impostazioni del telefono e torno alla mia app, il carattere viene cambiato. Non ho fatto nulla per questo. – sole007
Quale font stai usando in Interface Builder? –