全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

iOS实现自定义购物车角标显示购物数量(添加商品时角标抖动 Vie)

前言:

适用场景:商城类的 App 。将自定义的购物车 view 设置为 navigationItem 的导航栏按钮。效果图如下:

图1、右上角的购物车即是我们定义的view

实现原理:

1、利用 navigationItem 可以将 UIView 设置为导航栏的按钮;

2、将一个 UIButton 和 一个 UILabel 添加到一个 UIView 上。然后将这个 UIView 设置为 navigationItem 的右侧按钮;3、UILabel 控件的动画效果。

具体实现代码如下:​

​1、ShopCarView.h 文件

#import
@protocol ShopCarButtonDelegate <</span>NSObject>
// 代理的方法,在此方法内,完成按钮的点击事件。
- (void)shopCarButtonClickAction;
@end
@interfaceShopCarView : UIView
@property (nonatomic, assign)id<</span>ShopCarButtonDelegate> delegate;
// 为购物车设置角标内数值
- (void)setShopCarCount:(NSString *)count;
@end

2、ShopCarView.m 文件

​#import "ShopCarView.h"
@interfaceShopCarView()
@property (nonatomic, strong)UIButton *carButton;
@property (nonatomic, strong)UILabel *countLabel;
@end
@implementation ShopCarView
- (instancetype)initWithFrame:(CGRect)frame{
 CGRect myFrame = CGRectMake(0, 0, 40, 40);
 self = [superinitWithFrame:myFrame];
 if (self) {
 [selfaddSubview:self.carButton];
 }
 returnself;
}
- (UIButton *)carButton{
 if (!_carButton) {
 _carButton = [UIButtonbuttonWithType:UIButtonTypeCustom];
 _carButton.frame = CGRectMake(0, 8, 32, 32);
 [_carButtonsetImage:[UIImageimageNamed:@"购物1"] forState:UIControlStateNormal];
 [_carButtonaddTarget:selfaction:@selector(shopCarButtonAction) forControlEvents:UIControlEventTouchUpInside];
 }
 return_carButton;
}
- (UILabel *)countLabel{
 if (!_countLabel) {
 _countLabel = [[UILabelalloc] initWithFrame:CGRectMake(24, 5, 16, 16)];
 _countLabel.backgroundColor = [UIColorredColor];
 _countLabel.textAlignment = NSTextAlignmentCenter;
 _countLabel.textColor = [UIColorwhiteColor];
 _countLabel.layer.cornerRadius = 8;
 _countLabel.font = [UIFontsystemFontOfSize:12];
 _countLabel.layer.masksToBounds = YES;
 [selfaddSubview:_countLabel];
 }
 return_countLabel;
}
// 为购物车设置角标内数值
- (void)setShopCarCount:(NSString *)count{
 if ([count integerValue] == 0) {
 if (_countLabel) {
  [_countLabelremoveFromSuperview];
  _countLabel = nil;
 }
 return;
 }
 if ([count integerValue] > 9) {
 self.countLabel.text = @"9+";
 }else{
 self.countLabel.text = count;
 }
 [selfshakeView:_countLabel];
}
// 实现的代理方法
- (void)shopCarButtonAction{
 [self.delegateshopCarButtonClickAction];
}
// 实现抖动效果
-(void)shakeView:(UIView*)viewToShake
{
 CGFloat t =2.0;
 CGAffineTransform translateRight =CGAffineTransformTranslate(CGAffineTransformIdentity, t,0.0);
 CGAffineTransform translateLeft =CGAffineTransformTranslate(CGAffineTransformIdentity,-t,0.0);
 viewToShake.transform = translateLeft;
[UIViewanimateWithDuration:0.07delay:0.0options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeatanimations:^{
 [UIViewsetAnimationRepeatCount:2.0];
 viewToShake.transform = translateRight;
 } completion:^(BOOL finished){
 if(finished){
[UIViewanimateWithDuration:0.05delay:0.0options:UIViewAnimationOptionBeginFromCurrentStateanimations:^{
  viewToShake.transform =CGAffineTransformIdentity;
  } completion:NULL];
 }
 }];
}
@end

​代码很简单,逻辑也比较清晰。使用代理方法,将自定义的 View 的属性隐藏起来,打到很好的封装效果。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# ios  # 购物车角标  # 角标  # iOS添加购物车动画效果示例  # IOS购物车界面实现效果示例  # iOS实现电商购物车界面示例  # iOS搭建简易购物车页面  # 购物车  # 设置为  # 自定义  # 很好  # 在此  # 很简单  # 打到  # 即是  # 角标内  # delegate  # id  # count  # NSString  # setShopCarCount  # shopCarButtonClickAction  # void  # NSObject  # interfaceShopCarView  # assign  # nonatomic 


相关文章: 建站之星在线版空间:自助建站+智能模板一键生成方案  如何在云指建站中生成FTP站点?  如何快速上传自定义模板至建站之星?  如何在IIS7上新建站点并设置安全权限?  怎么将XML数据可视化 D3.js加载XML  如何通过可视化优化提升建站效果?  微信小程序 input输入框控件详解及实例(多种示例)  b2c电商网站制作流程,b2c水平综合的电商平台?  活动邀请函制作网站有哪些,活动邀请函文案?  定制建站价位费用解析与套餐推荐全攻略  如何在阿里云高效完成企业建站全流程?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  山东网站制作公司有哪些,山东大源集团官网?  深圳网站制作平台,深圳市做网站好的公司有哪些?  定制建站策划方案_专业建站与网站建设方案一站式指南  建站之星logo尺寸如何设置最合适?  北京专业网站制作设计师招聘,北京白云观官方网站?  如何快速搭建虚拟主机网站?新手必看指南  ,交易猫的商品怎么发布到网站上去?  如何在橙子建站上传落地页?操作指南详解  如何用PHP快速搭建CMS系统?  建站之星如何实现PC+手机+微信网站五合一建站?  太原网站制作公司有哪些,网约车营运证查询官网?  如何将凡科建站内容保存为本地文件?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何用AWS免费套餐快速搭建高效网站?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  网站图片在线制作软件,怎么在图片上做链接?  如何在景安服务器上快速搭建个人网站?  如何用VPS主机快速搭建个人网站?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何高效搭建专业期货交易平台网站?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  香港服务器租用费用高吗?如何避免常见误区?  Swift中swift中的switch 语句  如何彻底删除建站之星生成的Banner?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  香港服务器租用每月最低只需15元?  网站代码制作软件有哪些,如何生成自己网站的代码?  名字制作网站免费,所有小说网站的名字?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  企业微网站怎么做,公司网站和公众号有什么区别?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  Swift中循环语句中的转移语句 break 和 continue  如何用5美元大硬盘VPS安全高效搭建个人网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。