【问题标题】:UINavigationbar title is cut off when using titleTextAttributes使用 titleTextAttributes 时 UINavigationbar 标题被截断
【发布时间】:2011-12-25 05:56:57
【问题描述】:

我的 iPhone 应用程序有一个标签栏控制器,在每个标签(4 个标签)上都有一个 UINavigationController,我希望它是不同的颜色并更改标题上的字体,所以我制作了自己的自定义导航控制器以在任何地方使用所以这些变化只在一个地方。色调很简单,效果很好,但是当我尝试使用 setTitleTextAttributes 设置字体时,它会更改字体,但在某些视图中,标题显示在最后被截断(即“我的标题...”)。如果我更改视图然后返回到带有截断标题的视图,则标题确实会正确显示。

目前我的自定义 UINavigationController 中的 viewDidLoad 有:

UIFont *font = [UIFont fontWithName:@"GillSans-Bold" size:22];
NSDictionary *attr = [[NSDictionary alloc] initWithObjectsAndKeys:font, UITextAttributeFont, nil];
[self.navigationBar setTitleTextAttributes:attr];

我的想法是它正在改变 titleView 的字体,但它没有根据新大小调整大小(因为它是一个更大的字体)。另一个问题是当手机转向横向时,任何低垂的字母(g、p、y)的底部都会被切断。有没有办法调整标签大小或允许设置 minimumFontSize 以便文本在太大时缩小?

【问题讨论】:

    标签: uinavigationcontroller


    【解决方案1】:

    这对我有用

    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        [self setTitle:self.station.title];
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 400, 44)];
        label.backgroundColor = [UIColor clearColor];
        [label setFont:[UIFont fontWithName:@"GillSans-Bold" size:24.0]];
        label.textAlignment = UITextAlignmentCenter;
        label.textColor = [UIColor whiteColor];
        label.adjustsFontSizeToFitWidth = YES;
        label.text = self.title;    
        self.navigationItem.titleView = label;
    }
    

    【讨论】:

    • @JavierSoto 而不是?
    【解决方案2】:

    我认为这个问题是w.r.trootviewcontroller。标签栏是在你的根视图控制器中定义的吧?

    如果您通过导航控制器推送和弹出,则从那里开始 - 无论导航如何,所有内容都将相同。

    【讨论】:

      【解决方案3】:

      这对我有用:

      + (void)setNavBarTitle:(NSString *)title forUINavigationItem:(UINavigationItem*)navigationItem
      {
          UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)] autorelease];
          label.backgroundColor = [UIColor clearColor];
          label.font = [UIFont boldSystemFontOfSize:24];
          label.textAlignment = UITextAlignmentCenter;
          label.baselineAdjustment = UIBaselineAdjustmentAlignCenters;
          label.textColor = [UIColor whiteColor];
          label.adjustsFontSizeToFitWidth = YES;
          label.text = title;
          [label sizeToFit];
          navigationItem.titleView = label;
      }
      

      【讨论】:

        猜你喜欢
        • 2013-08-20
        • 1970-01-01
        • 2019-03-14
        • 2011-09-07
        • 2016-07-28
        • 2021-11-17
        • 2016-12-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多