如何使按钮的行为类似于表视图单元格

时间:2014-06-26 10:01:30

标签: ios objective-c xcode uibutton interface-builder

如何自定义UIButton以像表格视图一样运行? 我已经尝试在Interface Builder中创建它,但由于按钮是不可见的并且没有图像,所以当你按下按钮时它永远不会突出显示。我希望这种灰色的行为就像在表格视图上一样。 有谁知道怎么做?

2 个答案:

答案 0 :(得分:0)

我创建的Custom Control行为类似于UITableViewCell。见下面的代码

<强> MyButton.h

#import <UIKit/UIKit.h>

@interface MyButton : UIView
- (id)initWithFrame:(CGRect)frame selector:(SEL)sel target:(id)target;
@end

<强> MyButton.m

#import "MyButton.h"
#import <QuartzCore/QuartzCore.h>


@interface MyButton()
@property(assign)SEL selector;
@property(assign)id target;
@end

@implementation MyButton

- (id)initWithFrame:(CGRect)frame selector:(SEL)sel target:(id)target
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code

        self.selector=sel;
        self.target=target;

        self.backgroundColor=[UIColor darkGrayColor];
        self.layer.cornerRadius=5.0;
        UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
        [self addGestureRecognizer:tapGesture];
    }
    return self;
}

-(void)tapAction:(id)sender{

    [UIView animateWithDuration:.2 animations:^{
        [self setBackgroundColor:[UIColor lightGrayColor]];
    }];

    [self performSelector:@selector(deSelect) withObject:nil afterDelay:.2];
}

-(void)deSelect{

    [UIView animateWithDuration:.2 animations:^{
        [self setBackgroundColor:[UIColor darkGrayColor]];
    } completion:^(BOOL finished) {
        [_target performSelector:_selector withObject:self];
    }];

}

/*- (void)drawRect:(CGRect)rect
{
}*/

@end

因为,它使用UIView您可以轻松添加或在此控件上绘制任何内容,并轻松自定义。

希望这会有所帮助。 欢呼声。

答案 1 :(得分:0)

简单的方式:

制作一个10x10像素的灰色方形png图像,保存并命名为&#34; greayButtBkg.png&#34;并将其拖入XCode中的SupportingFiles。 将按钮的出口声明为.h文件,将IBAction方法声明为.m文件。

<强> yourFile.h:

@property (weak, nonatomic) IBOutlet UIButton *myButton;

<强> yourFile.m:

- (IBAction)pressButton:(id)sender {
    [_myButton setBackgroundImage:[UIImage imageNamed:@"greyButtBkg"] forState:UIControlStateHighlighted];
}

当你点击它时,你的按钮会变成灰色背景颜色,当你松开手指时,它会回到默认的clearColor。

希望这有帮助!