如何在选中时更改iOS上UIButton的文本颜色并保持选中状态

时间:2017-03-05 02:52:16

标签: ios swift uibutton uicontrol textcolor

我有一个非常小的UIButton(在清晰的背景上没有边框,白色文字颜色,它的superView有一个深色背景)。当用户点击UIButton时,我会更改白色文本颜色的Alpha通道,使其呈现灰色外观并向用户实际按下它们发出信号。现在,如何在按下按钮后将按钮保持在选定状态?

textColor几乎瞬间从灰色切换回白色,我希望颜色保持灰色,几乎表现得“粘”,所以用户真的看到它被选中了。我该如何实现这一目标?这是我到目前为止的代码。

logInButton.setTitleColor(pwStyle.appThemeTextFontColor, for: .normal)
        logInButton.setTitleColor(pwStyle.appThemeTextFontColor.withAlphaComponent(0.3), for: .highlighted)
        logInButton.setTitleColor(pwStyle.appThemeTextFontColor.withAlphaComponent(0.3), for: .selected)

^^上面的pwStyle.appThemeTextFontColor只返回UIColor.white

2 个答案:

答案 0 :(得分:0)

你可以添加"选择"颜色为"禁用"按钮状态:

logInButton.setTitleColor(pwStyle.appThemeTextFontColor.withAlphaComponent(0.3), for: .disabled)

然后只需按下按钮,然后在稍后重新启用它。

答案 1 :(得分:0)

确保按钮类型为“自定义”而不是“系统”,因此标题不会淡出并在内部修饰中使用。

var raw = @"<NinjaTrader>
    <OpenWorkspaces>
        <OpenWorkspace>OldWorkspace1</OpenWorkspace>
        <OpenWorkspace>OldWorkspace2</OpenWorkspace>
    </OpenWorkspaces>
</NinjaTrader>";
var xdoc = XDocument.Parse(raw);
List<string> newValues = new List<string>{"NewWorkspace1","NewWorkspace2","NewWorkspace3"};

var ow = xdoc.XPathSelectElement("//OpenWorkspaces");

ow.Descendants("OpenWorkspace").Remove();
ow.Add(newValues.Select(o => new XElement("OpenWorkspace", o)));

Console.WriteLine(xdoc.ToString());

干杯