![](/img/trans.png)
[英]UIButton : Background Image setting Issue when button state is highlighted?
[英]Create highlighted state background image programmatically for UIButton
我使用以下代码以编程方式创建了UIBarButton:
UIButton * rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
[rightButton setFrame:CGRectMake(0, 0, 81, 30)];
[rightButton setBackgroundColor:[UIColor clearColor]];
rightButton.layer.borderColor = [UIColor blackColor].CGColor;
rightButton.layer.borderWidth = 0.5f;
rightButton.layer.cornerRadius = 5.0f;
rightButton.titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:12];
[rightButton setTitleShadowColor:[UIColor blackColor] forState:UIControlStateNormal];
[rightButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
//set text according to sign in status
if (signIn) {
[rightButton setTitle:@"5 votes left" forState:UIControlStateNormal];
} else {
[rightButton setTitle:@"Sign in" forState:UIControlStateNormal];
}
UIBarButtonItem * rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:rightButton];
self.navigationItem.rightBarButtonItem = rightBarButton;
获得的按钮具有所需的外观,但是现在我需要的是,当按钮的状态突出显示时,应该有一个渐变为黑色的渐变效果,以使用户知道他已经按下了按钮,因为现在当我按下按钮时按钮,视图没有任何反应,因此用户无法知道他已按下按钮。
我想探索一个不涉及为所需状态设置背景图像的选择,因为按钮的文本可以根据应用程序配置动态变化,因此我需要完全通过代码来完成。
尽管这不会直接回答您的问题,但可能会有所帮助。 我必须为按钮动态创建一些图形,并想出了一种使用核心图形创建按钮图像的方法。 它使我可以灵活地在代码中参数化地更改外观,它在抽象的图形上下文中绘制按钮图像,然后将结果转换为可用于按钮的图像。 您可能会从我的解释中得到足够的好处,您可以根据需要自己尝试。
子类化UIButton并添加CALayer或CAGradientLayer以实现所需的突出显示效果。 将高亮层的初始状态设置为隐藏。 覆盖setHighlighted:
类似:
- (void) setHighlighted:(BOOL)highlight {
highlightLayer.hidden = !highlight;
[super setHighlighted:highlight];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.