我有一个UIButton,当按下时,会显示一个新视图,用户可以在其中更改某些设置.当视图被取消时,我想更新其标题/文本UIButton以反映新状态.我打电话给:
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
[myButton setTitle: @"myTitle" forState: UIControlStateApplication];
[myButton setTitle: @"myTitle" forState: UIControlStateHighlighted];
[myButton setTitle: @"myTitle" forState: UIControlStateReserved];
[myButton setTitle: @"myTitle" forState: UIControlStateSelected];
[myButton setTitle: @"myTitle" forState: UIControlStateDisabled];
Run Code Online (Sandbox Code Playgroud)
但它似乎永远不会改变IB中指定的原始文本/标题.
我在这里找到了很多解决方案,但不是Swift,我知道你可以使用UIImageView做到这一点,但在我的情况下,我需要以编程方式为UIButton设置alpha透明背景图像.最好的是UIImage扩展!
let img = UIImage(named: "imageWithoutAlpha")
var imgInsets = UIEdgeInsetsMake(0, 24, 0, 24)
image = image!.resizableImageWithCapInsets(imgInsets)
let myButton = UIButton(frame: CGRect(x: 50, y: 50, width: img!.size.width, height: img!.size.height))
myButton.setBackgroundImage(img, forState: UIControlState.Normal)
myButton.contentEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 20)
myButton.setTitle("Startbutton", forState: UIControlState.Normal)
myButton.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)
myButton.sizeToFit()
view.addSubview(myButton)
Run Code Online (Sandbox Code Playgroud)
目前的结果:

期望的结果:

当我在那时触摸按钮时,我想要更改图像,当我释放触摸按钮时,图像就是这样.
我想申请下面的代码,但这不符合我的期望.
请给我任何建议.....
-(IBAction)actionEnter:(id)sender{
if ([sender isSelected]) {
[sender setImage:[UIImage imageNamed:@"enter-hover.png"]
forState:UIControlStateNormal];
[sender setSelected:NO];
} else {
[sender setImage:[UIImage imageNamed:@"enter.png"]
forState:UIControlStateSelected];
[sender setSelected:YES];
}
Run Code Online (Sandbox Code Playgroud) 我经常看到UIControlState.normal用过,例如设置一个将在所有控制状态中使用titleColor的UIButton对象,正如UIButton. setTitleColor文档所说:
通常,如果未为状态指定属性,则默认使用正常值.如果未设置正常值,则属性默认为系统值.因此,您至少应该设置正常状态的值.
但我也发现UIControlState.init()被使用,例如以下行:
UIButton.setTitleColor(UIColor, for: UIControlState())
Run Code Online (Sandbox Code Playgroud)
想知道它有何不同,提前谢谢!
我开发用于在屏幕上绘图的应用程序 我有一堆按钮的工具面板.根据当前的用户操作,其中一些必须被禁用或按下.考虑到"state"属性是只读的,我如何以编程方式更改按钮的UIControlState?如果不可能,为此目的可以选择什么?
我在Xcode 8上用iOS10将我的应用更新为Swift 3,我收到错误:
Btn.setTitle('str', forState: .Normal)
Run Code Online (Sandbox Code Playgroud)
.Normal不再是UIControlState的枚举类型.我应该将哪种类型的UIControlState用于此状态?
Apple枚举现在定义为
public struct UIControlState : OptionSet {
public init(rawValue: UInt)
public static var highlighted: UIControlState { get } // used when UIControl isHighlighted is set
public static var disabled: UIControlState { get }
public static var selected: UIControlState { get } // flag usable by app (see below)
@available(iOS 9.0, *)
public static var focused: UIControlState { get } // Applicable only when the screen supports focus
public static var application: UIControlState { …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个可以用作复选框的按钮,并使用户能够以开/关方式切换复选框(未勾选/勾选).目前我使用属性检查器设置我的按钮,包括"标题"为"X","文本颜色"为红色.
一旦加载,按钮就会出现一个红色的"X",一旦点击它就会变成绿色的勾号.
我的问题是......你如何再次点击按钮以恢复到红色X(它的原始状态),每当点击一个循环继续?
@IBAction func check2(_ sender: UIButton) {
sender.setTitle("?", for: .normal)
sender.setTitleColor(UIColor.green, for: UIControlState.normal)
}
Run Code Online (Sandbox Code Playgroud)
谢谢