日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

iOS自定義UITabBar中間按鈕

瀏覽:10日期:2022-09-17 09:27:17

iOS自定義UITabBar中間按鈕的具體代碼,供大家參考,具體內容如下

iOS自定義UITabBar中間按鈕

自定義YLTbaBar繼承自UITabBar

git地址

YLTbaBar.h

//// YLTabBar.h// 自定義tabbar//// Created by nyl on 2018/10/15.// Copyright © 2018年 nieyinlong. All rights reserved.// #import <UIKit/UIKit.h>//tab頁面個數typedef NS_ENUM(NSInteger, kTbaBarItemUIType) { kTbaBarItemUIType_Three = 3,//底部3個選項 kTbaBarItemUIType_Five = 5,//底部5個選項}; @class YLTabBar; @protocol YLTabBarDelegate <NSObject> -(void)tabBar:(YLTabBar *)tabBar clickCenterButton:(UIButton *)sender; @end @interface YLTabBar : UITabBar @property (nonatomic, weak) id<YLTabBarDelegate> tabDelegate;@property (nonatomic, strong) NSString *centerBtnTitle;@property (nonatomic, strong) NSString *centerBtnIcon; + (instancetype)instanceCustomTabBarWithType:(kTbaBarItemUIType)type; @end

YLTbaBar.m

//// YLTabBar.m// 自定義tabbar//// Created by nyl on 2018/10/15.// Copyright © 2018年 nieyinlong. All rights reserved.// #import 'YLTabBar.h' @interface YLTabBar() @property(nonatomic, strong) UIButton *centerButton;@property(nonatomic, strong) UILabel *centerTitle;@property (nonatomic,assign) kTbaBarItemUIType type; @end @implementation YLTabBar +(instancetype)instanceCustomTabBarWithType:(kTbaBarItemUIType)type{ YLTabBar *tabBar = [[YLTabBar alloc] init]; tabBar.type = type; return tabBar;} -(instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { self.translucent = NO; UIButton *plusBtn = [UIButton buttonWithType:UIButtonTypeCustom]; self.centerButton = plusBtn; [plusBtn addTarget:self action:@selector(plusBtnDidClick) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:plusBtn]; UILabel *lblTitle = [[UILabel alloc] init]; self.centerTitle = lblTitle; lblTitle.font = [UIFont systemFontOfSize:10]; lblTitle.textColor = [UIColor blackColor]; lblTitle.textAlignment = NSTextAlignmentCenter; [self addSubview:lblTitle]; } return self;} -(void)plusBtnDidClick{ if (self.tabDelegate && [self.tabDelegate respondsToSelector:@selector(tabBar:clickCenterButton:)]) { [self.tabDelegate tabBar:self clickCenterButton:self.centerButton]; }} // 調整子視圖的布局-(void)layoutSubviews{ [super layoutSubviews]; CGFloat width = self.frame.size.width/self.type; Class class = NSClassFromString(@'UITabBarButton'); for (UIView *view in self.subviews) { if ([view isEqual:self.centerTitle]) {//self.centerButton view.frame = CGRectMake(0, 0, width, 15); view.center = CGPointMake(self.frame.size.width/2, self.frame.size.height - view.frame.size.height + 8); }else if ([view isEqual:self.centerButton]) {//self.centerButton view.frame = CGRectMake(0, 0, width, self.frame.size.height); [view sizeToFit]; view.center = CGPointMake(self.frame.size.width/2, 10); }else if ([view isKindOfClass:class]){//system button CGRect frame = view.frame; int indexFromOrign = view.frame.origin.x/width;//防止UIView *view in self.subviews 獲取到的不是有序的 if (indexFromOrign >= (self.type - 1) / 2) { indexFromOrign++; } CGFloat x = indexFromOrign * width; //如果是系統的UITabBarButton,那么就調整子控件位置,空出中間位置 view.frame = CGRectMake(x, view.frame.origin.y, width, frame.size.height); //調整badge postion for (UIView *badgeView in view.subviews){ NSString *className = NSStringFromClass([badgeView class]); // Looking for _UIBadgeView if ([className rangeOfString:@'BadgeView'].location != NSNotFound){ badgeView.layer.transform = CATransform3DIdentity; badgeView.layer.transform = CATransform3DMakeTranslation(-17.0, 1.0, 1.0); break; } } } }} -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ //這一個判斷是關鍵,不判斷的話push到其他頁面,點擊發布按鈕的位置也是會有反應的,這樣就不好了 //self.isHidden == NO 說明當前頁面是有tabbar的,那么肯定是在導航控制器的根控制器頁面 //在導航控制器根控制器頁面,那么我們就需要判斷手指點擊的位置是否在發布按鈕身上 //是的話讓發布按鈕自己處理點擊事件,不是的話讓系統去處理點擊事件就可以了 if (self.isHidden == NO) { //將當前tabbar的觸摸點轉換坐標系,轉換到發布按鈕的身上,生成一個新的點 CGPoint newP = [self convertPoint:point toView:self.centerButton]; //判斷如果這個新的點是在發布按鈕身上,那么處理點擊事件最合適的view就是發布按鈕 if ( [self.centerButton pointInside:newP withEvent:event]) { return self.centerButton; }else{//如果點不在發布按鈕身上,直接讓系統處理就可以了 return [super hitTest:point withEvent:event]; } } else {//tabbar隱藏了,那么說明已經push到其他的頁面了,這個時候還是讓系統去判斷最合適的view處理就好了 return [super hitTest:point withEvent:event]; }} -(void)setCenterBtnIcon:(NSString *)centerBtnIcon{ _centerBtnIcon = centerBtnIcon; [self.centerButton setBackgroundImage:[UIImage imageNamed:self.centerBtnIcon] forState:UIControlStateNormal]; [self.centerButton setBackgroundImage:[UIImage imageNamed:self.centerBtnIcon] forState:UIControlStateHighlighted];} -(void)setCenterBtnTitle:(NSString *)centerBtnTitle{ _centerBtnTitle = centerBtnTitle; self.centerTitle.text = centerBtnTitle;} @end

在UITabBarController中使用

// viewDidLoda中, KVO形式添加[self setValue:self.ylTabBar forKey:@'tabBar']; - (YLTabBar *)ylTabBar { if (!_ylTabBar) { _ylTabBar = [YLTabBar instanceCustomTabBarWithType:kTbaBarItemUIType_Five]; _ylTabBar.centerBtnIcon = @'centerIcon'; _ylTabBar.tabDelegate = self; } return _ylTabBar;}

YLTabBarDelegate

-(void)tabBar:(YLTabBar *)tabBar clickCenterButton:(UIButton *)sender{ UIAlertController *alert = [UIAlertController alertControllerWithTitle:@'提示' message:@'點擊了中間按鈕' preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *action = [UIAlertAction actionWithTitle:@'OK' style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { // TODO }]; [alert addAction:action]; [self presentViewController:alert animated:YES completion:nil];}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: IOS
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
激情五月综合网| 精品三级在线| 国产69精品久久| 日本三级亚洲精品| 欧美日韩免费观看一区=区三区| 九九99久久精品在免费线bt| 91麻豆精品激情在线观看最新 | 午夜欧美视频| 亚洲播播91| 美腿丝袜亚洲三区| 国产精品天天看天天狠| 日韩极品在线观看| 日韩一区二区三区免费视频| 欧美日韩1区| 日韩在线观看一区二区三区| 一区二区亚洲视频| 丝袜a∨在线一区二区三区不卡| 综合一区av| 日韩精品免费视频人成| 亚洲一区二区免费在线观看| 亚洲一区欧美二区| 日韩区欧美区| 日本不卡在线视频| 欧美精品中文字幕亚洲专区| 亚洲精品激情| 蜜臀va亚洲va欧美va天堂| 伊人久久亚洲影院| 麻豆9191精品国产| 亚洲精品在线国产| 国产亚洲观看| 精品成人18| 日韩中文影院| 国产综合婷婷| 日韩一区精品| 国产精选久久| 精品国产不卡| av资源中文在线天堂| 偷拍欧美精品| 久久先锋影音| 在线精品一区二区| 天堂俺去俺来也www久久婷婷| 欧美a在线观看| 在线一区av| 99国产精品自拍| 日韩精品中文字幕吗一区二区| 国产视频一区二区在线播放| 久久丁香四色| 色天使综合视频| 亚洲一区亚洲| 麻豆国产欧美一区二区三区 | 麻豆视频久久| 综合日韩在线| 欧美日韩在线播放视频| 免费日韩av| 久久国产高清| 国产精选在线| 国产高清视频一区二区| 日韩毛片在线| 欧美偷窥清纯综合图区| 亚洲一二三区视频| 久久久一二三| 成人午夜在线| 亚洲精品成人图区| 久久字幕精品一区| 97精品国产99久久久久久免费| 久久精品影视| 国产精品啊啊啊| 色在线视频观看| 日韩专区一卡二卡| 亚洲人成在线影院| 欧美日韩精品免费观看视完整| 色综合视频一区二区三区日韩 | 欧美日中文字幕| 国产欧美日韩视频在线| 欧美日韩a区| 99在线观看免费视频精品观看| 美女日韩在线中文字幕| 国产精品美女在线观看直播| 伊人成人在线视频| 一区久久精品| aⅴ色国产欧美| 亚洲综合婷婷| 久久免费高清| 日本亚洲不卡| 婷婷综合在线| 亚洲精品国模| 日韩福利视频网| 精品资源在线| 亚洲作爱视频| 亚洲精选久久| 国产婷婷精品| 中文字幕免费一区二区| 国产传媒av在线| 国产欧美日韩一级| 国产精品theporn| 少妇精品久久久一区二区| 男女性色大片免费观看一区二区| 91精品国产调教在线观看| 精品高清久久| 97精品国产99久久久久久免费| 亚洲欧美日本日韩| 777久久精品| 欧美中文一区二区| 美日韩一区二区三区| 欧美天堂一区| 日本欧美一区二区在线观看| 欧美成人一二区| 国产精品一区二区三区www| 欧美天堂视频| 日本视频一区二区| 波多野结衣久久精品| 亚洲a成人v| 日韩黄色在线观看| 日韩高清在线不卡| 亚洲激情精品| 今天的高清视频免费播放成人| 国产二区精品| 久久伊人国产| 久久国际精品| 亚洲免费专区| 亚洲一区二区三区四区电影| 狠狠色综合网| 欧美91视频| 欧美+日本+国产+在线a∨观看| 亚洲伦乱视频| 日韩欧美一区二区三区在线观看| 成人精品久久| 乱一区二区av| 91国内精品| 久久99视频| 国产一区二区三区亚洲综合| 久久av超碰| 国产一区二区视频在线看| 成人在线丰满少妇av| 国产欧美一区二区三区精品观看 | 亚洲精品自拍| 蜜桃视频在线观看一区二区| 97久久亚洲| 亚洲小说春色综合另类电影| 精品国产aⅴ| 久久国产亚洲| 日本大胆欧美人术艺术动态| 色婷婷色综合| 你懂的亚洲视频| 精品视频一区二区三区在线观看| 四虎国产精品免费观看| 国产精品99一区二区三| 国产精品毛片久久| 97se综合| 99成人在线| 亚洲美女久久| 国产麻豆一区二区三区精品视频| 精品国产乱码久久久久久樱花| 欧美国产美女| 久久免费黄色| 日韩精品乱码av一区二区| 麻豆国产欧美一区二区三区| 久久av日韩| 波多野结衣一区| 美女少妇全过程你懂的久久| 亚洲欧美一区在线| 精品三级在线观看视频| 99精品综合| 国产精品久久| 日韩国产在线一| 午夜影院一区| 欧美国产不卡| 国产精品极品国产中出| 91精品观看| 亚洲一区av| 国产伦理一区| 久久精品国语| 精品国产欧美日韩| 精品一区不卡| 久久久蜜桃一区二区人| 亚洲作爱视频| 一区三区视频| 日韩欧美高清一区二区三区| 国产无遮挡裸体免费久久| 亚洲日产国产精品| 国产精品嫩模av在线| 色狠狠一区二区三区| 美女久久久久| 性色av一区二区怡红| 免费日韩av| 国产成人精品999在线观看| 色天使综合视频| 视频一区欧美精品| 私拍精品福利视频在线一区| 日本一区二区免费高清| 欧美精品中文| 国产精品日韩| 羞羞答答国产精品www一本| 国产麻豆一区二区三区精品视频| 青青青免费在线视频| 蜜臀久久99精品久久久久久9| 麻豆视频观看网址久久| 欧美午夜不卡| 精品淫伦v久久水蜜桃| 野花国产精品入口|