Joh*_*ham 23 iphone objective-c uibutton border-color ios
我有一个简单的自定义UIButton,我添加了:
button.layer.bordercolor = [[UIColor blueColor]CGColor];
Run Code Online (Sandbox Code Playgroud)
但是,我想在突出显示按钮时更改.bordercolor.我尝试在按钮的touchDown动作中添加动作,将.bordercolor更改为红色,但是当用户抬起手指时,它会保持红色而不是返回蓝色.有任何想法吗?
Mic*_*lum 40
你走在正确的轨道上.检查下面的代码,它详细说明了这一点,但您要做的是将选择器链接到按钮上的不同控件事件.一个用于touchDown将阴影更改为红色,另一个用于touchUpInside在抬起手指时更改阴影.
另外,我看到你已经在Stack Overflow上提出了几个问题,并且尚未将其标记为正确的答案.要继续在本网站上获得帮助,您需要开始标记问题的正确答案.
[myButton addTarget:self action:@selector(highlightBorder) forControlEvents:UIControlEventTouchDown];
[myButton addTarget:self action:@selector(unhighlightBorder) forControlEvents:UIControlEventTouchUpInside];
- (void)highlightBorder
{
myButton.layer.borderColor = [[UIColor redColor]CGColor];
}
- (void)unhighlightBorder
{
myButton.layer.borderColor = [[UIColor blueColor]CGColor];
//additional code for an action when the button is released can go here.
}
Run Code Online (Sandbox Code Playgroud)
注: 其他选项为UIControlEvents包括:
enum {
UIControlEventTouchDown = 1 << 0,
UIControlEventTouchDownRepeat = 1 << 1,
UIControlEventTouchDragInside = 1 << 2,
UIControlEventTouchDragOutside = 1 << 3,
UIControlEventTouchDragEnter = 1 << 4,
UIControlEventTouchDragExit = 1 << 5,
UIControlEventTouchUpInside = 1 << 6,
UIControlEventTouchUpOutside = 1 << 7,
UIControlEventTouchCancel = 1 << 8,
UIControlEventValueChanged = 1 << 12,
UIControlEventEditingDidBegin = 1 << 16,
UIControlEventEditingChanged = 1 << 17,
UIControlEventEditingDidEnd = 1 << 18,
UIControlEventEditingDidEndOnExit = 1 << 19,
UIControlEventAllTouchEvents = 0x00000FFF,
UIControlEventAllEditingEvents = 0x000F0000,
UIControlEventApplicationReserved = 0x0F000000,
UIControlEventSystemReserved = 0xF0000000,
UIControlEventAllEvents = 0xFFFFFFFF
};
Run Code Online (Sandbox Code Playgroud)
use*_*170 12
该SWIFT 2.X回答您的问题:
➜使用"didSet"观察者覆盖突出显示的属性.
override var highlighted: Bool {
didSet {
switch highlighted {
case true:
layer.borderColor = UIColor.lightGrayColor().CGColor
case false:
layer.borderColor = UIColor.blackColor().CGColor
}
}
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特3:
override var isHighlighted: Bool {
didSet {
switch isHighlighted {
case true:
layer.borderColor = UIColor.lightGray.cgColor
case false:
layer.borderColor = UIColor.black.cgColor
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在UIButton子类中覆盖setHighlighted和setSelected方法.从那里你只需调整边框颜色如下:
- (void)setHighlighted:(BOOL)highlighted {
[super setHighlighted:highlighted];
[self tweakState:highlighted];
}
- (void)setSelected:(BOOL)selected {
[super setSelected:selected];
[self tweakState:selected];
}
- (void)tweakState:(BOOL)state {
if (state) {
self.layer.borderColor = [_highlightedBorderColor CGColor];
}
else {
self.layer.borderColor = [_defaultBorderColor CGColor];
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
斯威夫特4:
override var isHighlighted: Bool {
didSet {
layer.borderColor = isHighlighted ? UIColor.lightGray.cgColor : UIColor.black.cgColor
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25598 次 |
| 最近记录: |