修改系统自带的东西
-----------------------
修改系统UITabBarController.tabBar
// // HWTabBar.h #import <UIKit/UIKit.h> @class HWTabBar; #warning 因为HWTabBar继承自UITabBar,所以称为HWTabBar的代理,也必须实现UITabBar的代理协议 @protocol HWTabBarDelegate <UITabBarDelegate> @optional - (void)tabBarDidClickPlusButton:(HWTabBar *)tabBar; @end @interface HWTabBar : UITabBar @property (nonatomic, weak) id<HWTabBarDelegate> delegate; @end
// // HWTabBar.m #import "HWTabBar.h" @interface HWTabBar() @property (nonatomic, weak) UIButton *plusBtn; @end @implementation HWTabBar - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // 添加一个按钮到tabbar中 UIButton *plusBtn = [[UIButton alloc] init]; [plusBtn setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button"] forState:UIControlStateNormal]; [plusBtn setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button_highlighted"] forState:UIControlStateHighlighted]; [plusBtn setImage:[UIImage imageNamed:@"tabbar_compose_icon_add"] forState:UIControlStateNormal]; [plusBtn setImage:[UIImage imageNamed:@"tabbar_compose_icon_add_highlighted"] forState:UIControlStateHighlighted]; plusBtn.size = plusBtn.currentBackgroundImage.size; [plusBtn addTarget:self action:@selector(plusClick) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:plusBtn]; self.plusBtn = plusBtn; } return self; } /** * 加号按钮点击 */ - (void)plusClick { // 通知代理 if ([self.delegate respondsToSelector:@selector(tabBarDidClickPlusButton:)]) { [self.delegate tabBarDidClickPlusButton:self]; } } - (void)layoutSubviews { #warning [super layoutSubviews] 一定要调用 [super layoutSubviews]; // 1.设置加号按钮的位置 self.plusBtn.centerX = self.width * 0.5; self.plusBtn.centerY = self.height * 0.5; // 2.设置其他tabbarButton的位置和尺寸 CGFloat tabbarButtonW = self.width / 5; CGFloat tabbarButtonIndex = 0; for (UIView *child in self.subviews) { Class class = NSClassFromString(@"UITabBarButton"); if ([child isKindOfClass:class]) { // 设置宽度 child.width = tabbarButtonW; // 设置x child.x = tabbarButtonIndex * tabbarButtonW; // 增加索引 tabbarButtonIndex++; if (tabbarButtonIndex == 2) { tabbarButtonIndex++; } } } } @end
修改UITabBarController.tabBar只读的 不希望程序员对其修改 也不希望 tabBar.delegate被修改

浙公网安备 33010602011771号