TabBar中间拱起的两种思路:
2017-10-18 本文已影响0人
BoxDeng
一, UITabBarController 的 tabBar 上,添加 subView . 中间的按钮图片放大点。
methodOne.png点击这里,没反应的。
TabBar 的 代码
- (void)itemSelected:(LLTabBarItem *)sender {
if (sender.tabBarItemType != LLTabBarItemRise) {
[self setSelectedIndex:sender.tag];
} else {
// 中间的
if (self.delegateLLTabBar) {
if ([self.delegateLLTabBar respondsToSelector:@selector(tabBarDidSelectedRiseButton)]) {
[self.delegateLLTabBar tabBarDidSelectedRiseButton];
}
}
}
}
- (void)setTabBarItemAttributes:(NSArray<NSDictionary *> *)tabBarItemAttributes {
......
for (id item in _tabBarItemAttributes) {
if ([item isKindOfClass:[NSDictionary class]]) {
......
if (tabBarItem.tabBarItemType != LLTabBarItemRise) {
tabBarItem.tag = itemTag;
itemTag++;
} else {
passedRiseItem = YES;
}
......
}
}
}
TabBar 上面的 Button 的 代码
- (void)layoutSubviews {
[super layoutSubviews];
[self.titleLabel sizeToFit];
CGSize titleSize = self.titleLabel.frame.size;
CGSize imageSize = [self imageForState: UIControlStateNormal].size;
if (imageSize.width != 0 && imageSize.height != 0) {
CGFloat imageViewCenterY = CGRectGetHeight(self.frame) - 3 - titleSize.height - imageSize.height / 2 - 5;
self.imageView.center = CGPointMake(CGRectGetWidth(self.frame) / 2, imageViewCenterY);
} else {
CGPoint imageViewCenter = self.imageView.center;
imageViewCenter.x = CGRectGetWidth(self.frame) / 2;
imageViewCenter.y = (CGRectGetHeight(self.frame) - titleSize.height) / 2;
self.imageView.center = imageViewCenter;
}
这个方法比较少用。
imageForState:
Returns the image used for a button state.
二, TabBarViewController 中, 设置 tabBar 的 图片 偏移
methodTwo.png作用域增加,点击上方, 起到 点击下方 效果。
override func viewWillLayoutSubviews() {
//重新设置tabbar 的高度
var frame = self.tabBar.frame
frame.size.height = myHeight
frame.origin.y = self.view.frame.size.height - myHeight
self.tabBar.frame = frame
self.tabBar.barStyle = .default
//设置图片偏移,因为加高了tabbar
for i in 0..<self.tabBar.items!.count {
let item = self.tabBar.items![i]
if i != 2 {
item.imageInsets = UIEdgeInsets(top: myHeight - 49 - 5, left: 0, bottom: -(myHeight - 49 - 5), right: 0)
}
else{
item.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0)
}
}
}