91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS實現自定義購物車角標顯示購物數量(添加商品時角標抖動 Vie)

發布時間:2020-09-17 03:11:30 來源:腳本之家 閱讀:355 作者:水神_O_lei 欄目:移動開發

前言:

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

iOS實現自定義購物車角標顯示購物數量(添加商品時角標抖動 Vie)

圖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 的屬性隱藏起來,打到很好的封裝效果。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高青县| 东山县| 靖边县| 漳州市| 缙云县| 新蔡县| 兴化市| 桦南县| 长武县| 淅川县| 白山市| 南丹县| 东丰县| 韶关市| 平山县| 湛江市| 工布江达县| 科技| 光泽县| 乐昌市| 陇南市| 余姚市| 上杭县| 遂昌县| 南京市| 湖口县| 庐江县| 锡林浩特市| 新宁县| 宝兴县| 孝感市| 义乌市| 巨鹿县| 米林县| 沅陵县| 铜山县| 农安县| 长阳| 亳州市| 曲周县| 上犹县|