And*_*y A 125 iphone cocoa-touch uibutton ios
在我的iPhone应用程序中,我有一个我在Interface Builder中创建的UIButton.我可以在我的代码中成功启用和禁用它...
sendButton.enabled = YES;
Run Code Online (Sandbox Code Playgroud)
要么
sendButton.enabled = NO;
Run Code Online (Sandbox Code Playgroud)
但是,按钮的视觉外观总是一样的!它没有褪色或灰色.如果我尝试单击它,则会按预期启用或禁用它.我错过了什么吗?它不应该看起来褪色或灰色?
谢谢
Rav*_*vin 172
您可以使用以下代码:
sendButton.enabled = YES;
sendButton.alpha = 1.0;
or
sendButton.enabled = NO;
sendButton.alpha = 0.5;
Run Code Online (Sandbox Code Playgroud)
Ahm*_* R. 72
只需将状态配置更改为禁用并选择所需内容,背景图像为禁用状态
guy*_*zda 32
另一个选项是更改禁用状态的文本颜色(例如浅灰色).在Storyboard编辑器中,从State Config弹出按钮中选择Disabled,然后使用Text Color弹出按钮更改文本颜色.在代码中,使用-setTitleColor:forState:消息.
(我意识到这是一篇较旧的帖子,但我认为其他人可能会喜欢这个选项)
Jha*_*iya 23
尝试为UIControlStateDisabled
(禁用灰度图像)和UIControlStateNormal
(正常图像)设置不同的图像,以便按钮为您生成禁用状态.
Heo*_*des 14
要在禁用时使按钮褪色,您可以为其设置alpha.有两种选择:
第一种方式:如果你想申请你的应用程序中的所有按钮,那么你可以extension
像这样写UIButton:
extension UIButton {
open override var isEnabled: Bool{
didSet {
alpha = isEnabled ? 1.0 : 0.5
}
}
}
Run Code Online (Sandbox Code Playgroud)
第二种方式:如果您只是想申请应用程序中的某些按钮,那么您可以从UIButton编写自定义类,如下所示,并使用您要应用的类:
class MyButton: UIButton {
override var isEnabled: Bool {
didSet {
alpha = isEnabled ? 1.0 : 0.5
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 13
如果使用文本按钮,则可以将viewDidLoad放入实例方法中
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
Run Code Online (Sandbox Code Playgroud)
例:
[self.syncImagesButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];
Run Code Online (Sandbox Code Playgroud)
小智 11
你可以使用adjustsImageWhenDisabled
哪个属性UIButton
(@property (nonatomic) BOOL adjustsImageWhenDisabled)
例如:
Button.adjustsImageWhenDisabled = false
Run Code Online (Sandbox Code Playgroud)
斯威夫特 4+
extension UIButton {
override open var isEnabled: Bool {
didSet {
if self.isEnabled {
self.alpha = 1.0
}
else {
self.alpha = 0.5
}
//make sure button is updated
self.layoutIfNeeded()
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用
myButton.isEnabled = false
Run Code Online (Sandbox Code Playgroud)
设置title color
为不同的状态:
@IBOutlet weak var loginButton: UIButton! {
didSet {
loginButton.setTitleColor(UIColor.init(white: 1, alpha: 0.3), for: .disabled)
loginButton.setTitleColor(UIColor.init(white: 1, alpha: 1), for: .normal)
}
}
Run Code Online (Sandbox Code Playgroud)
用法:(文字颜色会自动改变)
loginButton.isEnabled = false
Run Code Online (Sandbox Code Playgroud)
这是一个相当古老的问题,但实现这一目标的方法很简单.
myButton.userInteractionEnabled = false
这将仅禁用任何触摸手势而不更改按钮的外观
在斯威夫特:
previousCustomButton.enabled = false
previousCustomButton.alpha = 0.5
Run Code Online (Sandbox Code Playgroud)
或者
nextCustomButton.enabled = true
nextCustomButton.alpha = 1.0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
85555 次 |
最近记录: |