【问题标题】:Why isn't the UIButton I'm using for a UIBarButtonItem changing in height?为什么我用于 UIBarButtonItem 的 UIButton 的高度没有变化?
【发布时间】:2018-09-24 21:37:04
【问题描述】:

我正在创建一个按钮并将其作为UIBarButtonItem 添加到下面的代码中。我正在努力使它成为一个完美的圆圈。

UIButton *hasMessageBtn = [UIButton alloc];
hasMessageBtn.backgroundColor = [UIColor orangeColor];
hasMessageBtn.layer.frame = CGRectMake(0, 0, 24, 24);
hasMessageBtn.layer.cornerRadius = 12;

[hasMessageBtn addTarget:self action:@selector(openMessages:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *messages = [[UIBarButtonItem alloc] initWithCustomView:hasMessageBtn];

self.navigationItem.leftBarButtonItem = messages;

不过,看起来尺寸有两个错误。高度从不改变,甚至当我改变宽度值时,甚至认为宽度会改变,这似乎是不正确的,因为设置了圆角半径,

hasMessageBtn.layer.cornerRadius = 12; 

没有完全封闭顶部和底部的圆角。我在这里错过了什么?

【问题讨论】:

  • 尝试设置断点并检查按钮的大小。我正在复制你的代码并将其用于 UIView,它已转换为圆圈

标签: ios objective-c uibutton uibarbuttonitem


【解决方案1】:

从 iOS 11 开始,您必须为栏按钮项设置约束。这是它在 Objective-c 中的样子:

[hasMessageBtn.widthAnchor constraintEqualToConstant:24].active = YES;
[hasMessageBtn.heightAnchor constraintEqualToConstant:24].active = YES;

很快:

hasMessageBtn.heightAnchor.constraint(equalToConstant: 24).isActive = true
hasMessageBtn.widthAnchor.constraint(equalToConstant: 24).isActive = true

如果你对这个话题有更多的疑问,我建议你看看 2017 WWDC 视频Updating Your App for iOS 11

【讨论】:

    【解决方案2】:

    当您将自定义视图的默认尺寸缩小时,其高度会将高度拉伸到34。这就是你的leftBarButton 被扭曲的原因。

    解决方案:

    1. barButton应用高度和宽度限制(建议*)

      UIBarButtonItem *messages = [[UIBarButtonItem alloc] initWithCustomView:hasMessageBtn];
      
      [NSLayoutConstraint activateConstraints:@[[messages.customView.widthAnchor constraintEqualToConstant:24.0], [messages.customView.widthAnchor constraintEqualToConstant:24.0]]];
      
    2. 设置自定义视图的按钮大小,CGSize(34, 34)

      hasMessageBtn.layer.frame = CGRectMake(0, 0, 34, 34);
      
      hasMessageBtn.layer.cornerRadius = hasMessageBtn.frame.size.height / 2;
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 2020-07-06
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多