开发者

Custom Font in Tabbar

Hey,

is there a way to set the tabbar's font to e.g. Chalkboard? I've seen the question for the font size and tried it with font, but the loop wouldn't work out.

If there's no way for a custom font, is it possible to remove all text and make the tabbar's item co开发者_开发百科vering the whole tab? Or can I somehow put a imageView on top of the tabbar and use the tabs "through" that image?

Thanks!


I've found myself an amazing and very easy tutorial to achieve exactly what I need. For further reference and for all, that might need that too, here's the link

Part 1

Part 2


Put in the AppDelegate.m under:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Here is the code:

    NSMutableDictionary *attributes = [NSMutableDictionary dictionaryWithDictionary: [[UITabBarItem appearance] titleTextAttributesForState:UIControlStateNormal]];
[attributes setValue:[UIFont fontWithName:@"Avenir" size:10] forKey:UITextAttributeFont];
[[UITabBarItem appearance] setTitleTextAttributes:attributes1 forState:UIControlStateNormal];


On iOS 13 there is a bug with UITabBarItem.appearance().setTitleTextAttributes method, so we need to do workaround like this:

    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.alignment = .center
    let attributes = [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 12),
                      NSAttributedString.Key.paragraphStyle: paragraphStyle]

    let appearance = UITabBarItem.appearance()
    appearance.setTitleTextAttributes(attributes, for: .normal)

    if #available(iOS 13.0, *) {
        let appearance = UITabBarAppearance()
        appearance.stackedLayoutAppearance.normal.titleTextAttributes = attributes
        appearance.stackedLayoutAppearance.normal.badgeBackgroundColor = .blue
        appearance.stackedLayoutAppearance.selected.titleTextAttributes = attributes
        appearance.stackedLayoutAppearance.selected.badgeBackgroundColor = .blue
        tabBar.standardAppearance = appearance
    }

If you only set appearance tabBar.standardAppearance = appearance on iOS 13 you'll still have a bug, but the other one

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜