UIFont provides the +preferredFontForTextStyle: method to get a font instance with the proper size based on the user's selected content size category and the given UIFontTextStyle.
What I would like to do is get a font for a given text style and content size. Something like +fontForContentSizeCategory:andTextStyle:.
Unfortunately I cannot find anything similar to that in the headers for UIFont or UIFontDescriptor.
Any idea on how to achieve this?
Thanks
Unfortunately, both
+[UIFont preferredFontForTextStyle:]and+[UIFontDescriptor preferredFontDescriptorWithTextStyle:]rely on-[UIApplication preferredContentSizeCategory]internally. They use a private function_CTFontDescriptorCreateWithTextStyleto retrieve a CoreText font descriptor with specific text style and size category, and that's eventually based on a category → size mapping from the configuration fileCoreTextConfig.pliststored somewhere, but I assume you wouldn't want to use private APIs.While hesitantly implying a possibility to dynamically swizzle
-[UIApplication preferredContentSizeCategory]to trick+[UIFontDescriptor preferredFontDescriptorWithTextStyle:]into returning a font descriptor for the size class you want, I can't recommend any specific approach to this. You can retrieve a font descriptor like this:but it won't contain a size attribute, so you would be left with trying to come up with a category → size mapping yourself.