我有一个带按钮的rightBarButtonItem。我在viewDidLoad中更改了按钮的alpha值,但它没有出现。为什么?如果我把它设置为任何动作(触摸事件)它的工作正常。如何解决这个问题以及为什么它不能在ViewDidLoad中工作?
答案 0 :(得分:6)
UIKit会自动重置UIBarButtonItems的alpha值。要让它消失,您实际上需要通过将leftBarButtonItem
或rightBarButtonItem
设置为nil
来完全删除它。如果您只想要一些透明度,则需要将其设置为您将设置为barButtonItem背景的图像(为此,您可以使用appearance
代理。
答案 1 :(得分:5)
可以设置UIBarButtonItem的alpha值。为此,您需要创建一个UIButton,然后将其设置为UIBarButtonItem的视图。这是一个例子:
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];
答案 2 :(得分:1)
UIKit
会自动设置customView
UIBarButtonItem
属性的alpha值,但您可以使用自定义类覆盖并强制执行所需的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 }
}
}