在UIToolbar中向上移动UIBarButtonItems

时间:2011-12-30 22:36:50

标签: iphone objective-c uibarbuttonitem uitoolbar

我已经创建了一个UIToolbar的自定义实例来使用背景图像,而对于我的特定图像,实际工具栏的高度比图像本身小(例如,工具栏为60px,低20px为透明,旁边有一个小项目)。这有点混淆了UIToolbar,因为所有UIBarButtonItem都被迫垂直居中,这与我的图像不对齐。

我可以设置保证金或其他东西让按钮向上滑动吗?我考虑过UIButtons,但我需要一个与现有工具栏外观相匹配的图像,所以我更喜欢动态生成按钮。

2 个答案:

答案 0 :(得分:1)

我不完全确定,但这可能有效:- (void)setBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics UIBarButtonItem类。{/ p>

参考:UIBarButtonItem class reference

答案 1 :(得分:0)

使用最近的iOS版本,我能够可靠地工作的唯一方法是调整UIToolbar的内容视图。在我的UIToolbar子类中,我在layoutSubviews中有以下代码:

if ( _preferredHeight )
{
    [self.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull v, NSUInteger idx, BOOL * _Nonnull stop) {

        NSString* className = NSStringFromClass(v.class);
        if ( [className localizedCaseInsensitiveContainsString:@"content"] )
        {
            v.frame = CGRectOffset( self.bounds, 0, 2 * (44 - self->_preferredHeight) );
            *stop = YES;
        }

    }];
}

请注意,这可以在UIToolbar私有子视图层次结构中查看,并且在将来的iOS版本中可能不是AppStore安全或中断。