忽略iOS中的动态类型:辅助功能

sol*_*007 11 iphone accessibility ios ios8

有没有办法完全忽略iOS应用程序中的动态类型/字体大小设置?我的意思是有一种方式像plist条目,所以我可以完全禁用它.据我所知,只要设置发生变化,我们就可以观察并重新配置字体.我正在寻找一个更简单的解决方案.我正在使用iOS8.谢谢.

mea*_*ers 5

在您的AppDelegate添加中:

#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);

    ...
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*ift 5

不必烦恼UIApplication。只是子类UIApplication并提供您自己的实现preferredContentSizeCategory

迅速:

class MyApplication: UIApplication {

    override var preferredContentSizeCategory: UIContentSizeCategory {
        get { return UIContentSizeCategory.large }
    }
}

UIApplicationMain(
    CommandLine.argc,
    CommandLine.unsafeArgv,
    NSStringFromClass(MyApplication.self),
    NSStringFromClass(AppDelegate.self)
)
Run Code Online (Sandbox Code Playgroud)

目标C:

@interface MyApplication : UIApplication
@end

@implementation MyApplication

- (UIContentSizeCategory) preferredContentSizeCategory
{
    return UIContentSizeCategoryLarge;
}

@end

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, NSStringFromClass([MyApplication class]), NSStringFromClass([AppDelegate class]));
    }
}
Run Code Online (Sandbox Code Playgroud)