iOS UI基础学习 Note_dayThree

今天的内容不多,主要是对UIButton的一个深入了解,用代码做一个UIButton 和利用之前的知识点做一个模拟购物车的一个demo

UIButton

  • 类型
    UIButton的类型有很多,默认情况下的类型是system,最常用的是custom(凡是添加图片的UIButton都是custom),detail disclosure,info light,info dark (最右三种其实类型是差不多的,都是信息提示的按钮,都不可以改变尺寸)add contact (图标为”+”按键),今天主要讲custom

  • 状态
    UIButton有5种状态,这里先讲3种,一种是Default 也称之为普通状态,即该状态是没有对按钮进行任何操作的状态.第二种是Highlighted 也称之为高亮状态,指的是监听到按键被按下去后还没松手时的状态.最后一种是Enabled/Disabled 代表按键状态是否能够按下去

用代码实现创建UIButton并监听按下的动作 demo 核心代码如下:

-(void)button{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
/*
创建UIButton对象并初始化类型,设置按钮的类型只能在初始化的时候,因为该属性为readonly
*/
    button.frame = CGRectMake(100, 100, 150, 80);
    [button setBackgroundImage:[UIImage imageNamed:@"buttongreen"] forState:UIControlStateNormal];
    [button setBackgroundImage:[UIImage imageNamed:@"buttongreen_highlighted"] forState:UIControlStateHighlighted];
    [button setImage:[UIImage imageNamed:@"player_btn_pause_normal"] forState:UIControlStateNormal];
    [self.view addSubview:button];
    [button setTitle:@"暂停" forState:UIControlStateNormal];
/*
设置背景图片 设置按钮普通 设置按钮的文字时一定要用set方法,因为所有属性均为只读
*/
    [button addTarget:self action:@selector(monitor) forControlEvents:UIControlEventTouchUpInside ];
 // 监听按钮按下去的动作 并调用monitor方法
    [button setTitle:@"播放" forState:UIControlStateHighlighted];
    [button setImage:[UIImage imageNamed:@"player_btn_play_normal"] forState:UIControlStateHighlighted];

}
-(void)monitor{
    NSLog(@"%s",__func__);
}

效果如下:
dayThree01
按下去后会调用monitor方法

dayThree02
按下去不松手可以看到背景颜色 按钮图片 还有文字的改变

综合练习

模拟购物车的一个demo 综合了UIImage..一个九宫格摆列布局的算法
核心代码如下:

-(void)commodityView{
    NSInteger cowCount = 3;
//   总行数
    CGFloat width = 80;
    CGFloat height = 100;
//设置商品View(图片+文字)的宽高
    NSInteger index = self.ShopCarView.subviews.count;
//设置商品的个数
    NSInteger hGap = (self.ShopCarView.frame.size.width - cowCount * width) / (cowCount - 1);
//水平间距
    NSInteger vGap = self.ShopCarView.frame.size.height - 2 * height;
//垂直间距
    CGFloat x = (index % cowCount) * (width + hGap);
    CGFloat y = (index / cowCount) * (height + vGap);
//设置商品的位置
    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(x, y, width, height)];
//创建商品的View并初始化上面设置的数据
    view.backgroundColor = [UIColor redColor];
    [self.ShopCarView addSubview:view];
}

- (IBAction)addButton:(UIButton *)sender {
    [self commodityView];
    self.deleteButoon.enabled = YES;
    //只要添加了商品就打开删除键的使能
    sender.enabled = (self.ShopCarView.subviews.count != 6);
//    只要商品的数充满了购物车的容量就关闭添加键的使能

}
- (IBAction)deleteButton:(UIButton *)sender {
    UIView *view = [self.ShopCarView.subviews lastObject];
    [view removeFromSuperview];
//删除最后一个商品
    self.addButton.enabled = YES;
//只要删除就打开添加键的使能
    sender.enabled = (self.ShopCarView.subviews.count != 0);
//没有商品了就关闭删除键的使能
}

截图如下:
dayThree03
没商品时,无法删除东西

dayThree04
有商品时但没满,可以删除可以添加

dayThree05
购物车满时,无法添加东西

关于九宫格算法的

其实就是把整个父控件的宽度 - (列数*子控件的宽度) / (列数 -1 )的
得出水平间距
所以位置的X值就是(子控件个数 % 总个数) 再乘以 子控件的宽度 + 水平间距
垂直间距等于 父控件的高度 - (总行数 * 子控件的高度) / (行数 - 1)
位置的Y值 是 (子控件个数 / 总个数) 再乘以 子控件的宽度 + 垂直间距

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值