4

我有一个带有按钮的 rightBarButtonItem。我在 viewDidLoad 中更改了按钮的 alpha,但它没有出现。为什么?如果我将其设置为任何操作(触摸事件)它工作正常。如何解决这个问题以及为什么它在 ViewDidLoad 中不起作用?

4

3 回答 3

6

UIKit 会自动重置 UIBarButtonItems 的 alpha 值。要让它消失,您实际上需要通过设置leftBarButtonItemrightBarButtonItemto将其完全删除nil。如果您只想要一些透明度,则需要将其设置为将设置为 barButtonItem 背景的图像(为此,您可以使用appearance代理。

于 2013-06-15T09:55:02.557 回答
5

It is possible to set the alpha value for a UIBarButtonItem. To do it you need to create a UIButton and then set it as the view of the UIBarButtonItem. Here is an example:

UIButton *pauseButton = [UIButton buttonWithType:UIButtonTypeCustom];
[pauseButton setTitle:NSLocalizedString(@"pause", nil) forState:UIControlStateNormal];
[pauseButton sizeToFit];
[pauseButton addTarget:self action:@selector(pauseButtonClick) forControlEvents:UIControlEventTouchUpInside];
pauseButton.titleLabel.alpha = 0; /* set this alpha to whatever you like */
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:pauseButton];
于 2014-09-08T14:56:14.633 回答
1

UIKitcustomView自动设置属性的 alpha UIBarButtonItem,但您可以使用自定义类覆盖并强制执行所需的 alpha。(如果你想要一个半透明的按钮)。

// For use in UIBarButtonItem - UIKit resets the alpha of custom views automatically
final class HalfTransparentButton: UIButton {
    override var alpha: CGFloat {
        set { super.alpha = 0.5 }
        get { return 0.5 }
    }
}
于 2017-01-25T11:13:41.797 回答