要实现一个类似折叠效果的按钮 不多说 直接上代码和效果
- (void)createButton
{
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 55)];
button.backgroundColor = [UIColor orangeColor];
[button setTitle:@"你到底要不要点我呀" forState:UIControlStateNormal];
button.titleLabel.textColor = [UIColor blackColor];
[button addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside];
[button setImage:[UIImage imageNamed:@"arrow_down.png"] forState:UIControlStateNormal];
button.adjustsImageWhenHighlighted = NO;// 取消图片的高亮状态
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;// 水平左对齐
button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;// 垂直居中对齐
/**
* 按照上面的操作 按钮的内容对津贴屏幕左边缘 不美观 可以添加一下代码实现间隔已达到美观
* UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right)
* top: 为正数:表示向下偏移 为负数:表示向上偏移
* left: 为整数:表示向右偏移 为负数:表示向左偏移
* bottom: 为整数:表示向上偏移 为负数:表示向下偏移
* right: 为整数:表示向左偏移 为负数:表示向右偏移
*
**/
button.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);//
button.titleEdgeInsets = UIEdgeInsetsMake(0, button.imageView.frame.size.width, 0, 0);
[self.view addSubview:button];
}
// 点击方法
- (void)onClick:(UIButton *)sender
{
sender.selected = !sender.selected;
if (sender.selected == YES) {
sender.backgroundColor = [UIColor orangeColor];
}else{
sender.backgroundColor = [UIColor blueColor];
}
}
实现效果: