如何让iOS按钮在按下时给出视觉反馈?

时间:2014-07-29 16:01:28

标签: ios user-interface ios7

我正在制作一个iOS 7应用程序,我知道Apple的新设计指南需要一堆平面设计简约的东西,但这个应用程序并不是真正针对技术娴熟的人群,所以苹果的指导方针提出了一个问题。我有一个常规按钮,里面只有文字,我想在它周围加上一个轮廓,我也希望按钮能够对按下做出反应,以便人们真正知道它是一个按钮,所以当按钮将它们带到另一个应用程序时,它们不会吓坏?那么我该如何

  1. 在常规iOS按钮周围添加一个大纲?

  2. 制作一个常规的iOS按钮给出一些简单的视觉反馈来按下?

4 个答案:

答案 0 :(得分:3)

如果您使用故事板(界面构建器)来设计应用程序,这很容易:

  1. 创建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

  2. 您可以通过更改按钮的背景颜色和/或更改其字体颜色来提供视觉反馈。

    使用Interface Builder设置这些属性非常简单: 只需选择按钮,然后选择状态"突出显示"在状态配置下拉菜单中,根据需要设置背景颜色和字体颜色。

    Button Configuration with 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事件并手动将外观更改为您想要的任何控件。