首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UIToolbar中调整UIBarButtonItem标题的垂直位置

在UIToolbar中调整UIBarButtonItem标题的垂直位置
EN

Stack Overflow用户
提问于 2015-05-08 20:47:40
回答 5查看 11.1K关注 0票数 19

可以在UIToolbar中调整UIBarButtonItem的标题吗?

我尝试了以下几行代码,但没有成功:

代码语言:javascript
复制
UIBarButtonItem.appearance().setTitlePositionAdjustment(UIOffset(horizontal: 30, vertical: 30), forBarMetrics: UIBarMetrics.Default)

还有这一条:

代码语言:javascript
复制
self.setTitlePositionAdjustment(UIOffset(horizontal: 30, vertical: 30), forBarMetrics: UIBarMetrics.Compact)
EN

回答 5

Stack Overflow用户

发布于 2015-09-02 15:34:12

偏移文本( UIBarButtonItem!)在垂直的UIToolBar内部似乎不能与Xcode7(Beta6)一起工作。

你是对的,according to the docs,这应该可以做到:UIBarButtonItem.appearance().setTitlePositionAdjustment

在AppDelegate中全局执行:

代码语言:javascript
复制
UIBarButtonItem.appearance().setTitlePositionAdjustment(UIOffset(horizontal: 30, vertical: 30), forBarMetrics: UIBarMetrics.Default)

或在本地使用商品直销店本身:

(Swift)

代码语言:javascript
复制
self.myBarItem.setTitlePositionAdjustment(UIOffset(horizontal: 30, vertical: 30), forBarMetrics: UIBarMetrics.Default)

(Obj C)

代码语言:javascript
复制
[self.myBarItem setTitlePositionAdjustment:UIOffsetMake(30, 30) forBarMetrics: UIBarMetricsDefault];

这是一个外观上的错误吗?

票数 7
EN

Stack Overflow用户

发布于 2019-04-08 20:58:25

更改文本的baselineOffset

代码语言:javascript
复制
let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(self.someFunction))
let attributes = [NSAttributedString.Key.baselineOffset: NSNumber(value: -3)]
doneButton.setTitleTextAttributes(attributes, for: .normal)

负值baselineOffset将标题文本下移,正值将标题文本上移。默认值为0。

我在iOS 11上进行了测试。

票数 4
EN

Stack Overflow用户

发布于 2015-10-28 23:40:56

我也对此感到沮丧,所以我将UIBarButtonItem子类化,使其按预期工作。根据this的回答,我得出了这个结论:

代码语言:javascript
复制
@interface TitleAdjustingBarButtonItem(){
    UIView*   _parentView;
    UIButton* _button;
}

@end

@implementation TitleAdjustingBarButtonItem

-(id) initWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action{
    _button = [[UIButton alloc] init];
    [_button setTitle:title forState:UIControlStateNormal];

    [_button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];

    [_button sizeToFit];

    _parentView = [[UIView alloc] initWithFrame:_button.bounds];

    [_parentView addSubview:_button];

    return [super initWithCustomView:_parentView];
}

#pragma mark - property setters -

-(void) setTitlePositionAdjustment:(UIOffset)adjustment forBarMetrics:(UIBarMetrics)barMetrics{
    [_button sizeToFit];
    _parentView.bounds = CGRectMake(0.0, 0.0, _button.bounds.size.width - (adjustment.horizontal * 2.0), _button.bounds.size.height - (adjustment.vertical * 2.0));
}

诚然,它没有考虑到不同的bar指标,但对于默认指标,我已经让它工作得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30124298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档