如何使iOS按钮在按下时提供视觉反馈?
我正在制作一款iOS 7应用程序,我知道苹果公司的新设计准则要求一些平面设计的极简主义的东西,但这款应用程序并不是真正针对精通技术的人群,所以苹果的准则带来了一个问题。我有一个普通的按钮,里面只有文本,我想在它周围画一个轮廓,我还想让按钮对被按下做出反应,这样人们就知道它是一个按钮,这样当按钮把他们带到不同的应用程序时,他们就不会惊慌失措了?那我该怎么做呢如何使iOS按钮在按下时提供视觉反馈?,ios,user-interface,ios7,Ios,User Interface,Ios7,我正在制作一款iOS 7应用程序,我知道苹果公司的新设计准则要求一些平面设计的极简主义的东西,但这款应用程序并不是真正针对精通技术的人群,所以苹果的准则带来了一个问题。我有一个普通的按钮,里面只有文本,我想在它周围画一个轮廓,我还想让按钮对被按下做出反应,这样人们就知道它是一个按钮,这样当按钮把他们带到不同的应用程序时,他们就不会惊慌失措了?那我该怎么做呢 在常规iOS按钮周围画一个轮廓 做一个常规的iOS按钮给被按下的人一些简单的视觉反馈 如果您设置了ui按钮的文本或图像属性,按下按钮时会自动
如果您设置了
ui按钮的文本或图像属性
,按下按钮时会自动给出反馈(字体颜色和图像会变暗)。但是,如果您只是将按钮放在一些其他控件的顶部,那么您必须连接到触碰事件
并手动将外观更改为您想要的任何控件。如果您使用故事板(界面生成器)设计应用程序,这非常简单:
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;
}
然后在interface builder中选择按钮并将其类更改为XYBorderButton
最简单的方法:将UIButton的类型设置为“系统”,而不是“自定义”。触摸系统按钮时,其图像和/或文本将高亮显示 您应该在Interface Builder中执行此操作,将按钮的“类型”更改为“系统” 但是,如果需要以编程方式执行,可以执行以下操作:
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
- (void)viewDidLoad {
[super viewDidLoad];
self.button.layer.cornerRadius = 5;
self.button.layer.borderColor = [UIColor blackColor];
self.button.layer.borderWidth = 1;
}
对于UIButton的边框,您可以执行以下操作:
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
- (void)viewDidLoad {
[super viewDidLoad];
self.button.layer.cornerRadius = 5;
self.button.layer.borderColor = [UIColor blackColor];
self.button.layer.borderWidth = 1;
}
用法:
@objc func backAction(_ sender:UIButton!)
{
sender.provideVisualFeedback4press()
showsTouchOnHighlight
属性。提示:故意违反设计准则很可能会导致你的应用被拒绝。@esqew在按钮周围放置一个框会导致我的应用被拒绝?@AlexFritz不一定。不过,那些将来阅读这个问题并可能看到关于覆盖UIButton
外观的答案的人可能会有这样的想法。我只是为了提供信息而发表评论。只要它是在良好的品味和适合您的用户界面的其余部分,那么它应该不会是一个问题。然而,我不能百分之百地谈论这个问题,因为我不是做复习的那个人。