如何使iOS按钮在按下时提供视觉反馈?

如何使iOS按钮在按下时提供视觉反馈?,ios,user-interface,ios7,Ios,User Interface,Ios7,我正在制作一款iOS 7应用程序,我知道苹果公司的新设计准则要求一些平面设计的极简主义的东西,但这款应用程序并不是真正针对精通技术的人群,所以苹果的准则带来了一个问题。我有一个普通的按钮,里面只有文本,我想在它周围画一个轮廓,我还想让按钮对被按下做出反应,这样人们就知道它是一个按钮,这样当按钮把他们带到不同的应用程序时,他们就不会惊慌失措了?那我该怎么做呢 在常规iOS按钮周围画一个轮廓 做一个常规的iOS按钮给被按下的人一些简单的视觉反馈 如果您设置了ui按钮的文本或图像属性,按下按钮时会自动

我正在制作一款iOS 7应用程序,我知道苹果公司的新设计准则要求一些平面设计的极简主义的东西,但这款应用程序并不是真正针对精通技术的人群,所以苹果的准则带来了一个问题。我有一个普通的按钮,里面只有文本,我想在它周围画一个轮廓,我还想让按钮对被按下做出反应,这样人们就知道它是一个按钮,这样当按钮把他们带到不同的应用程序时,他们就不会惊慌失措了?那我该怎么做呢

  • 在常规iOS按钮周围画一个轮廓

  • 做一个常规的iOS按钮给被按下的人一些简单的视觉反馈


  • 如果您设置了
    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

  • 例如,您可以通过更改按钮的背景色和/或更改其字体颜色来提供视觉反馈

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


  • 最简单的方法:将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
    外观的答案的人可能会有这样的想法。我只是为了提供信息而发表评论。只要它是在良好的品味和适合您的用户界面的其余部分,那么它应该不会是一个问题。然而,我不能百分之百地谈论这个问题,因为我不是做复习的那个人。