横向模式下 UIBarButtonItem 的垂直对齐太低

Posted

技术标签:

【中文标题】横向模式下 UIBarButtonItem 的垂直对齐太低【英文标题】:Vertical alignment of UIBarButtonItem is too low in landscape mode 【发布时间】:2011-07-22 20:18:11 【问题描述】:

我正在使用以下代码向 UIToolbar (iPad) 添加标题:

- (void)setupToolbarItems 
if (!toolbarItems) 
    UIBarButtonItem *flexSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 386.0, 20.0)];
    titleLabel.autoresizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth);
    titleLabel.textColor = [UIColor whiteColor];
    titleLabel.text = @"Hello";
    titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:20.0];
    titleLabel.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5];
    titleLabel.shadowOffset = CGSizeMake(0.0, -1.0);
    titleLabel.textAlignment = UITextAlignmentCenter;
    titleLabel.backgroundColor = [UIColor clearColor];
    UIBarButtonItem *titleLabelItem = [[UIBarButtonItem alloc] initWithCustomView:titleLabel];
    toolbarItems = [[NSArray alloc] initWithObjects:flexSpacer, titleLabelItem, flexSpacer, nil];
    [titleLabel release];
    [flexSpacer release];
    [titleLabelItem release];


[self setItems:self.toolbarItems animated:NO];

纵向模式下一切正常,但横向模式下标签太低了。 UIBarButtonItem 不是一个视图,所以我无法从我的代码中调整它的位置,就我所见......我该如何解决这个问题?


肖像:

横向:

【问题讨论】:

【参考方案1】:

UIViewAutoresizingFlexibleHeight 添加到您的titleView。你不能让它缩小标签。

【讨论】:

这似乎没有任何作用。还是和以前一样 其实在重新添加XIB并清理之后,它现在可以工作了。谢谢!

以上是关于横向模式下 UIBarButtonItem 的垂直对齐太低的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局在纵向模式下垂直堆叠视图并在横向模式下水平堆叠视图?

非横向模式下 iPad Mini 的 CSS 响应问题(垂直)

iOS 版 Safari 上垂直弹性框中的最后一个元素在横向模式下被裁剪

带有纵向和横向图像的 UIBarButtonItem 可能会显示横向的纵向图像

横向 iPhone 中的 UIBarButtonItem 高度

iOS - 在横向显示一个很长的垂直堆栈视图