我正在制作一个iOS 7应用程序,我知道Apple的新设计指南需要一堆平面设计简约的东西,但这个应用程序并不是真正针对技术娴熟的人群,所以苹果的指导方针提出了一个问题。我有一个常规按钮,里面只有文字,我想在它周围加上一个轮廓,我也希望按钮能够对按下做出反应,以便人们真正知道它是一个按钮,所以当按钮将它们带到另一个应用程序时,它们不会吓坏?那么我该如何
在常规iOS按钮周围添加一个大纲?
制作一个常规的iOS按钮给出一些简单的视觉反馈来按下?
答案 0 :(得分:3)
如果您使用故事板(界面构建器)来设计应用程序,这很容易:
创建UIButton
的子类。我们称之为XYBorderButton
。
在XYBorderButton.m中添加方法:
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self makeBorder];
}
return self;
}
- (void)makeBorder {
self.layer.cornerRadius = 10.0;
self.layer.borderColor = [UIColor blueColor];
self.layer.borderWidth = 1.0;
}
然后在界面构建器中选择按钮并将其类更改为XYBorderButton
您可以通过更改按钮的背景颜色和/或更改其字体颜色来提供视觉反馈。
使用Interface Builder设置这些属性非常简单: 只需选择按钮,然后选择状态"突出显示"在状态配置下拉菜单中,根据需要设置背景颜色和字体颜色。
答案 1 :(得分:3)
最简单的方法:将UIButton的类型设为" System"而不是" Custom"。触摸时系统按钮的图像和/或文本将突出显示。
您应该在Interface Builder中执行此操作,方法是更改按钮" Type"成为"系统"
但是,如果您需要以编程方式执行此操作,则可以执行以下操作:
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
至于UIButton的边界,你可以这样做:
- (void)viewDidLoad {
[super viewDidLoad];
self.button.layer.cornerRadius = 5;
self.button.layer.borderColor = [UIColor blackColor];
self.button.layer.borderWidth = 1;
}
答案 2 :(得分:1)
extension UIButton {
func provideVisualFeedback4press()
{
backgroundColor = cyan
alpha = 0
UIView .animate(withDuration: 0.1, animations: { [weak self] in
guard let s = self else {
return
}
s.alpha = 1
}, completion: { [weak self] completed in
if completed {
guard let s = self else {
return
}
s.backgroundColor = UIColor.white
}
})
}}
用法:
@objc func backAction(_ sender:UIButton!)
{
sender.provideVisualFeedback4press()
答案 3 :(得分:0)
如果您设置UIButton
的文字或图片属性,它会在按下时自动给出反馈(字体颜色和图像会变暗)。但是,如果您只是将按钮放在其他控件的顶部,那么您必须连接到Touch Down
事件并手动将外观更改为您想要的任何控件。