Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
iOS¿ª·¢-iPad²à±ßÀ¸TabÑ¡ÏÇл»
 
×÷ÕߣºFly_Elephant À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ 2015-03-20
  3791  次浏览      27
 

AndroidÖÐϰ¹ßÁ˽вà±ßÀ¸£¬iOSÖÐÈç¹û²»Ï°¹ß²à±ßÀ¸³ÆºôµÄ»°¿ÉÒÔ½Ðdock£¬²à±ßÀ¸µÄÇл»£¬ÀàËÆÓÚAndroidÖеĵײ¿µ¼º½À¸µÄÇл»£¬iPad³ß´ç´óÁËһЩ£¬µ¼º½µÄÀ¸Ä¿·ÅÔÚ²à±ß»áÏÔʾµÄ¸üºÃÄÍ¿´Ò»Ð©¡£Ñ¡ÏÊÇÓð´Å¥ÊµÏֵģ¬Í¨¹ý°´Å¥µÄ״̬¿ØÖư´Å¥µÄ±³¾°Í¼Æ¬£¬×îºóͨ¹ý°´Å¥µÄTagÊôÐÔ½øÐÐÏà¶ÔÓ¦µÄ²Ù×÷£¬iPadÐèÒª¿¼ÂÇÒ»¸öºáÊúÆÁµÄÎÊÌ⣬²»¹ýÏÖÔÚÓÐЩÏîĿΪÁËЧ¹ûÒ²ºÃ£¬ÎªÁË¿ª·¢Ð§ÂÊÒ²°Õ£¬¿ÉÄÜÖ»ÊÇÑ¡ÖÐÁ˺áÆÁЧ¹û¡£

»ù±¾²¼¾Ö

²¼¾Ö֮ǰÏÈÀ´¿´Ò»ÏÂ×îÖÕÐèҪʵÏÖµÄЧ¹û:

ÐèÒª×îËĸöͼƬ½øÐÐÏàÓ¦µÄ²Ù×÷£¬Í¨¹ýͼƬ¿ØÖÆ×îºóµÄÇл»Ð§¹û£¬ºÚÉ«µÄÊôÓÚ²à±ßÀ¸µÄÇøÓò£¬ËĸöͼƬÊǰ´Å¥µÄ±³¾°Í¼Æ¬£¬²»¹ýÓÉÓÚÐèÒª¾­³£²Ù×÷ÇøÓòµÄ¿í¶ÈºÍ°´Å¥µÄ¿í¶È£¬ÐèÒªÔ¤¶¨ÒåÒ»ÏÂ,н¨Ò»¸öCommon.hÎļþ£¬Èç¹ûÄ㲻ϰ¹ß£¬ÄãÒ²¿ÉÒÔ¶¨ÒåΪConfig.h£¬ÄÜ¿´¶®¼´¿É:

//²à±ßÀ¸ÌõÄ¿µÄ³ß´ç

#define GPDockItemWidth 100

#define GPDockItemHeight 80

ÔÚ֮ǰµÄxCodeÖÐÊÇĬÈϵÄÓÐpchÎļþµÄ£¬xCode6.1ÖÐûÓУ¬ÐèҪн¨Ò»¸öpchÎļþ:

н¨Ö®ºó²¢²»Äܱ£Ö¤ÄãÔËÐгɹ¦£¬»¹ÐèҪȥ±àÒëÖÐÉèÖÃÒ»ÏÂPrefix Header($(SRCROOT)/PrefixHeader.pch)£¬ÇåÀíÏÂÏîÄ¿£¬µ¼ÈëCommon.hÎļþ¼´¿É³É¹¦£»

Demoʵս

¢ÙÊ×ÏÈÐèҪн¨Ò»¸öGPMainController¿ØÖÆÆ÷£¬¿ØÖÆÒ³ÃæÒ³ÃæÂß¼­:

//

//  GPMainController.h

//  GrouponProject

//http://www.cnblogs.com/xiaofeixiang

//  Created by keso on 15/3/9.

//  Copyright (c) 2015Äê keso. All rights reserved.

//

#import 
#import "GPDock.h"
@interface GPMainController : UIViewController 
@end

ÐèÒªÔÚViewDidLoad¼ÓÔØ²à±ßÀ¸ÇøÓò:

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    self.view.backgroundColor=[UIColor greenColor];

     

    //¼ÓÈë²à±ßÀ¸Dock

    GPDock *dock=[[GPDock alloc]initWithFrame:CGRectMake(0, 0,GPDockItemWidth, self.view.frame.size.height)];

    dock.dockDelegate=self;

    [self.view addSubview:dock];

 

}

ÏìÓ¦²à±ßÀ¸µÄµã»÷ʼþ£¬ÐèÒªÓõ½Î¯ÍУ¬Èç¹ûίÍв»ÊǺÜÊìϤ£¬¿ÉÒԲο¼±¾ÈË֮ǰµÄ²©¿Í£º

-(void)switchMainByTabItem:(GPDock *)gpdock originalTab:(int)start destinationTab:(int)end{

    switch (end) {

        case 0:

            self.view.backgroundColor=[UIColor blackColor];

            break;

        case 1:

            self.view.backgroundColor=[UIColor blueColor];

            break;

        case 2:

            self.view.backgroundColor=[UIColor redColor];

            break;

        case 3:

            self.view.backgroundColor=[UIColor purpleColor];

            break;

        default:

            break;

    }

     

}

GPMainContrllerÖ÷ÒªÓÃÓÚ´¦ÀíÒ³ÃæµÄÂß¼­£¬Í¬Ê±ÐèÒªÔÚAppDelegateÖÐÉèÖÃһϸù¿ØÖÆÆ÷:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.

    [UIView setAnimationDuration:2.0];

    self.window.rootViewController=[[GPMainController alloc]init];

    return YES;

}

¢ÚÉèÖòà±ßÀ¸ÇøÓò£¬¼Ì³Ð×ÔUIView:

//

//  GPDock.h

//  GrouponProject

//http://www.cnblogs.com/xiaofeixiang

//  Created by keso on 15/3/10.

//  Copyright (c) 2015Äê keso. All rights reserved.

//

#import 
#import "GPTabItem.h"
@class GPDock;
@protocol GPDockItemDelegate 
-(void)switchMainByTabItem:(GPDock*)gpdock originalTab:(int)start destinationTab:(int)end;
@end
@interface GPDock : UIView

{
    GPTabItem *selectedTabItem;
}
@property (nonatomic,weak) id dockDelegate;
@end

³õʼ»¯²à±ßÀ¸:

-(instancetype)initWithFrame:(CGRect)frame{

    self=[super initWithFrame:frame];

    if (self) {

        //×Ô¶¯ÉìËõ¸ß¶È¿ÉÉìËõ£¬Óұ߾à¿ÉÒÔÉìËõ

        self.autoresizingMask=UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleRightMargin;

       //ÉèÖñ³¾°Í¼Æ¬

        self.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"Toolbar_bg_tabbar.png"]];
        [self addTabItems];
    }
    return self;
}

Ìí¼ÓTabÑ¡Ï:

//Ìí¼ÓTabÑ¡Ï

- (void)addTabItems

{

     //Ê×Ò³

    [self addSingleTab:@"Toolbar_searchshop.png" selectedImage:@"Toolbar_searchshop_selected.png" weight:1];
    //ÍŹº
    [self addSingleTab:@"Toolbar_groupon.png" selectedImage:@"Toolbar_groupon_selected.png" weight:2];
    //ÅÅÐаñ
    [self addSingleTab:@"Toolbar_ranklist.png" selectedImage:@"Toolbar_ranklist_selected.png" weight:3];

    // ¸öÈËÖÐÐÄ

    [self addSingleTab:@"Toolbar_usercenter.png" selectedImage:@"Toolbar_usercenter_selected.png" weight:4];
}

ÒòΪ´úÂëÀàËÆ£¬ËùÒÔ·â×°µ½Ò»¸ö·½·¨ÀïÃæ:

- (void)addSingleTab:(NSString *)backgroundImage selectedImage:(NSString *)selectedImage weight:(int)weight

{

    GPTabItem *tabItem=[[GPTabItem alloc]init];

    [tabItem setBackgroundImage:backgroundImage];

    [tabItem setSelectedImage:selectedImage];

    //ÉèÖÃλÖÃ

    tabItem.frame = CGRectMake(0, GPDockItemHeight * (weight+1), 0, 0);

    //ÉèÖÃÑ¡Öд¥ÃþÑ¡ÖÐʼþ

    [tabItem addTarget:self action:@selector(tabItemTouchEvent:) forControlEvents:UIControlEventTouchDown];

    tabItem.tag = weight - 1;

    [self addSubview:tabItem];

     

}

ÉèÖô¥Ãþʼþ:

//ÉèÖô¥Ãþʼþ

- (void)tabItemTouchEvent:(GPTabItem *)tabItem

{

 

    if ([self.dockDelegate respondsToSelector:@selector(switchMainByTabItem:originalTab:destinationTab:)]) {

        [self.dockDelegate switchMainByTabItem:self originalTab:selectedTabItem.tag destinationTab:tabItem.tag];

    }

    selectedTabItem.enabled=YES;

    tabItem.enabled = NO;

    //½«µ±Ç°Ñ¡Öеĸ³Öµ

    selectedTabItem =tabItem;

}

¢Û·â×°²à±ßÀ¸µÄGPDockItem£¬È»ºóÑ¡ÏÉϵĿÉÒԼ̳Уº

//

//  GPDockItem.h

//  GrouponProject

//²©¿ÍÔ°FlyElephant:http://www.cnblogs.com/xiaofeixiang

//  Created by keso on 15/3/11.

//  Copyright (c) 2015Äê keso. All rights reserved.

//

 

#import 
@interface GPDockItem : UIButton
//±³¾°Í¼Æ¬
@property (nonatomic,strong)  NSString  *backgroundImage;
//Ñ¡ÖÐͼƬ
@property (nonatomic,strong)  NSString  *selectedImage;
@end

¡¡ÉèÖñ³¾°Í¼Æ¬ºÍÑ¡ÖÐͼƬ:

//

//  GPDockItem.m

//  GrouponProject

//²©¿ÍÔ°FlyElephant:http://www.cnblogs.com/xiaofeixiang

//  Created by keso on 15/3/11.

//  Copyright (c) 2015Äê keso. All rights reserved.

//

 

#import "GPDockItem.h"
@implementation GPDockItem

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
}
*/
-(instancetype)initWithFrame:(CGRect)frame{
    self=[super initWithFrame:frame];
    if (self) {
        // Item·Ö¸îÏß
        UIImageView *splitLine = [[UIImageView  alloc] init];
        splitLine.frame = CGRectMake(0, 0, GPDockItemWidth, 2);
        splitLine.image = [UIImage imageNamed:@"separator_tabbar_item.png"];
        [self addSubview:splitLine];
    }
    return self;
}
//ÉèÖñ³¾°Í¼Æ¬
-(void)setBackgroundImage:(NSString *)backgroundImage{
    _backgroundImage=backgroundImage;

    [self setImage:[UIImage imageNamed:backgroundImage] forState:UIControlStateNormal];
}
//ÉèÖÃÑ¡ÖÐͼƬ
-(void)setSelectedImage:(NSString *)selectedImage{
    _selectedImage=selectedImage;

    [self setImage:[UIImage imageNamed:selectedImage] forState:UIControlStateDisabled];
}
-(void)setFrame:(CGRect)frame{

    //¹Ì¶¨Item¿í¸ß

    frame.size=CGSizeMake(GPDockItemWidth, GPDockItemHeight);
    [super setFrame:frame];
}
@end

GPTabItem´úÂë:

#import "GPDockItem.h"
@interface GPTabItem : GPDockItem
@end

ÉèÖÃÑ¡ÖÐʱµÄ±³¾°Í¼Æ¬:

//

//  GPTabItem.m

//  GrouponProject

//²©¿ÍÔ°FlyElephant:http://www.cnblogs.com/xiaofeixiang

//  Created by keso on 15/3/11.

//  Copyright (c) 2015Äê keso. All rights reserved.

//
 

#import "GPTabItem.h"
@implementation GPTabItem
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
}
*/
-(instancetype)initWithFrame:(CGRect)frame{
    self=[super initWithFrame:frame];
    if (self) {
    // ÉèÖÃÑ¡ÖÐʱ±³¾°Í¼Æ¬
    [self setBackgroundImage:[UIImage imageNamed:@"bg_tabbar_item.png"] forState:UIControlStateDisabled];
    }
    return self;
}
@end

×îÖÕЧ¹ûÈçÏÂ:

´úÂëÏà¶ÔÒÔÍù½Ï¶à£¬ÈçÓÐÒÅ©£¬ÇëËæÊ±ÓëÎÒÁªÏµ£¬ÈçÓкøУ¬ÍƼö»ò¹Ø×¢¾ù¿É

   
3791 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ


Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ


ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ