国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS實(shí)現(xiàn)自定義購物車角標(biāo)顯示購物數(shù)量(添加商品時(shí)角標(biāo)抖動(dòng) Vie)

2020-07-26 02:51:40
字體:
供稿:網(wǎng)友

前言:

適用場景:商城類的 App 。將自定義的購物車 view 設(shè)置為 navigationItem 的導(dǎo)航欄按鈕。效果圖如下:

圖1、右上角的購物車即是我們定義的view

實(shí)現(xiàn)原理:

1、利用 navigationItem 可以將 UIView 設(shè)置為導(dǎo)航欄的按鈕;

2、將一個(gè) UIButton 和 一個(gè) UILabel 添加到一個(gè) UIView 上。然后將這個(gè) UIView 設(shè)置為 navigationItem 的右側(cè)按鈕;3、UILabel 控件的動(dòng)畫效果。

具體實(shí)現(xiàn)代碼如下:​

​1、ShopCarView.h 文件

#import@protocol ShopCarButtonDelegate <</span>NSObject>// 代理的方法,在此方法內(nèi),完成按鈕的點(diǎn)擊事件。- (void)shopCarButtonClickAction;@end@interfaceShopCarView : UIView@property (nonatomic, assign)id<</span>ShopCarButtonDelegate> delegate;// 為購物車設(shè)置角標(biāo)內(nèi)數(shù)值- (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;}// 為購物車設(shè)置角標(biāo)內(nèi)數(shù)值- (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];}// 實(shí)現(xiàn)的代理方法- (void)shopCarButtonAction{ [self.delegateshopCarButtonClickAction];}// 實(shí)現(xiàn)抖動(dòng)效果-(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 的屬性隱藏起來,打到很好的封裝效果。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持武林網(wǎng)!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 太谷县| 旬阳县| 清苑县| 海安县| 许昌市| 米泉市| 比如县| 龙川县| 上杭县| 磴口县| 玉环县| 大邑县| 宿迁市| 宜州市| 西城区| 兰考县| 炉霍县| 荃湾区| 霍邱县| 庐江县| 柘荣县| 响水县| 南通市| 桦川县| 康平县| 延吉市| 招远市| 逊克县| 合水县| 深圳市| 石台县| 独山县| 来凤县| 宁波市| 济宁市| 青河县| 民丰县| 平原县| 布尔津县| 永清县| 太原市|