中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

自定義tabBar詳解第二種方案

發布時間:2020-08-05 13:51:33 來源:網絡 閱讀:830 作者:yjf123546 欄目:開發技術

自定義tabBar能夠解決自定義圖片無法顯示(只顯示一塊顏色)這個弊端,自定義tabBar要繼承UITabBarController

原圖片:

(1), 自定義tabBar詳解第二種方案 (2), 自定義tabBar詳解第二種方案(3),  自定義tabBar詳解第二種方案(4), 自定義tabBar詳解第二種方案(5)自定義tabBar詳解第二種方案

下面是自定義了一個TabBar ,每個按鈕可以顯示圖片(自定義避免了圖片無法顯示只顯示一塊顏色)

效果圖:


自定義tabBar詳解第二種方案


代碼實現:

一, 首先創建一個繼承UIButton的類CustomTabBar,

在.h文件中:

//指定協議是為了實現點擊button顯示相應地頁面,像系統的tabBar一樣

@protocol CustomTabBarDelegate <NSObject>

-(void)didSelectBarItemAtIndex:(NSInteger)index;

@end

@interface CustomTabBar : UIButton
@property(nonatomic,assign) NSInteger index;
@property (nonatomic,retain) id<CustomTabBarDelegate> delegate;
- (id)initWithFrame:(CGRect)frame WithImage:(UIImage *)p_w_picpath AndSelectedImage:(UIImage *)p_w_picpath;
@end



在.m文件中


#import "CustomTabBar.h"

@interface CustomTabBar ()

@end
@implementation CustomTabBar

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code

    }
    return self;
}

- (id)initWithFrame:(CGRect)frame WithImage:(UIImage *)p_w_picpath AndSelectedImage:(UIImage *)selectedImage{
    self = [super initWithFrame:frame];
    if (self) {
        self.frame = frame;
        [self setAdjustsImageWhenHighlighted:NO];
        [self setImage:p_w_picpath forState:UIControlStateNormal];
        [self setImage:selectedImage forState:UIControlStateSelected];
        [self addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
    }
    return self;
}

-(void)click:(UIButton *)btn{
    if ([self.delegate respondsToSelector:@selector(didSelectBarItemAtIndex:)]) {
        [self.delegate didSelectBarItemAtIndex:self.index];
    }
    switch ((int)(btn.selected)) {
        case 0:
            btn.selected = YES;
            break;
        case 1:
            btn.selected = NO;
            break;
        default:
            break;
    }
}


@end


二, 創建一個類CustomizedTabBarController繼承UITabBarController


在.m文件中

- (void)loadViewController
{
    CoverCollectionViewController *coverVC = [[CoverCollectionViewController alloc] init];
    //coverVC.title = @"每日封面";
    CustomizedNavigationController *coverNaVC = [[CustomizedNavigationController alloc] initWithRootViewController:coverVC];
    coverNaVC.navigationItem.title = @"iDailyWATCh";
    
    NewsTableViewController *newsVC = [[NewsTableViewController alloc] init];
    //newsVC.title = @"腕表雜志";
    CustomizedNavigationController *newsNaVC = [[CustomizedNavigationController alloc] initWithRootViewController:newsVC];
    
    BrandsTableViewController *brandsVC = [[BrandsTableViewController alloc] init];
    //brandsVC.title = @"品牌維基";
    CustomizedNavigationController *brandsNaVC = [[CustomizedNavigationController alloc] initWithRootViewController:brandsVC];
    
    VideosCollectionViewController *videosVC = [[VideosCollectionViewController alloc] init];
    //videosVC.title = @"視頻";
    CustomizedNavigationController *videosNaVC = [[CustomizedNavigationController alloc] initWithRootViewController:videosVC];
    
    MoreViewController *moreVC = [[MoreViewController alloc] init];
    //moreVC.title = @"更多";
    CustomizedNavigationController *moreNaVC = [[CustomizedNavigationController alloc] initWithRootViewController:moreVC];
    
    self.viewControllers = @[coverNaVC, newsNaVC, brandsNaVC, videosNaVC, moreNaVC];
    self.selectedIndex = 0;
    RELEASE_SAFE(coverNaVC);
    RELEASE_SAFE(coverVC);
    RELEASE_SAFE(brandsNaVC);
    RELEASE_SAFE(brandsVC);
    RELEASE_SAFE(videosNaVC);
    RELEASE_SAFE(videosVC);
    RELEASE_SAFE(moreNaVC);
    RELEASE_SAFE(moreVC);
}



- (void)setupTabBar
{
    for (int i = 0 ; i < 5; i++) {
        if (i < 3) {
            CustomTabBar *bar = [[CustomTabBar alloc]initWithFrame:CGRectMake(0 + 80 * i, 0, 80, 49) WithImage: [UIImage p_w_picpathNamed:[NSString stringWithFormat:@"%d", i + 100]]AndSelectedImage:[UIImage p_w_picpathNamed:[NSString stringWithFormat:@"%d", i + 130]]];
            bar.index = i;
            bar.delegate = self;
            bar.backgroundColor = RGB(245, 245, 245);
            [self.tabBar addSubview:bar];
            [bar release];
            if (i == 0) {
                bar.selected = YES;
            }
        } else {
            CustomTabBar *bar = [[CustomTabBar alloc]initWithFrame:CGRectMake(0 + 40 * (i + 3), 0, 40, 49) WithImage: [UIImage p_w_picpathNamed:[NSString stringWithFormat:@"%d", i + 100]]AndSelectedImage:[UIImage p_w_picpathNamed:[NSString stringWithFormat:@"%d", i + 130]]];
            bar.index = i;
            bar.delegate = self;
            bar.backgroundColor = RGB(245, 245, 245);
            [self.tabBar addSubview:bar];
            [bar release];
        }
    }
}


-(void)didSelectBarItemAtIndex:(NSInteger)index{
    [self resignBatState];
    self.selectedViewController = self.viewControllers[index];
}
-(void)resignBatState{
    NSArray *arr = [self.tabBar subviews];
    for (CustomTabBar *bar in arr) {
        if ([bar isKindOfClass:[CustomTabBar class]]) {
            bar.selected = NO;
        }
    }
}

- (void)changeViewController:(UIButton *)button
{
    self.selectedIndex = button.tag;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}









向AI問一下細節

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

AI

万山特区| 晋中市| 滁州市| 昌都县| 福鼎市| 延川县| 武义县| 临猗县| 泉州市| 菏泽市| 沅陵县| 淅川县| 石台县| 清水河县| 昆山市| 汾西县| 新竹市| 喜德县| 醴陵市| 宝坻区| 平原县| 崇义县| 乡城县| 准格尔旗| 安福县| 永福县| 巴楚县| 类乌齐县| 大庆市| 湘潭市| 和硕县| 博客| 漳平市| 南昌市| 永嘉县| 陵川县| 锦州市| 运城市| 府谷县| 怀集县| 调兵山市|