前言:

适用场景:商城类的 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小时内与您取得联系。