iOS 自定义滑动切换TabbarItem 觉得设计丑也要做出来的UI效果。。。

UI丑却要继续做的感言:

对UI不满意的时候,就会觉得丑爆了,时间长了,却丑习惯了。

论前一阵子Tabbar 多丑,丑得最后不要tabbar了...但是自定义tabbar 和遇到的问题解决的过程可以记录一下

目标效果:

并有切换效果,但是并没说清楚,具体切换效果,比如粘滞,弹性?

于是我做了一个弹性的。

看实现效果

一. 原理:

(1)普通切换选择效果,直接贴在了tabbar上,tabbar再自定义处理图层

(2)触发事件是tabbar上的,没有图片而已。这么处理也是取巧了,降低了整体自定义难度

二.遇到的问题

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UINavigationController *)viewController

代理方法里,如何区分选中视图控制器?

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UINavigationController *)viewController
{
    UIViewController *vc = viewController.viewControllers.firstObject;
    NSInteger tag = vc.tabBarItem.tag;
    NSLog(@"点击了 第 %ld 个 tab",tag);//tag来自于视图初始化时候的赋值
}

- (UIViewController *)mineVC
{
    if (!_mineVC) {
        _mineVC = [[UIViewController alloc]init];
        NSString *title = nil;
        _mineVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:title image:nil selectedImage:nil];
        _mineVC.tabBarItem.tag = 2;//这里对不同的视图的根控制器进行标记区分
        _mineVC.view.backgroundColor = [UIColor redColor];
    }
    return _mineVC;
}

在应用不断交互中,tabbar的合理显示和隐藏?

 //显示是在主界面上的视图控制器显示tabbar其他情况都隐藏,处理方案: //在视图控制器基类HFBaseViewController里对tabbar做显示隐藏的逻辑判断,并在交互过程自然显示隐藏不突兀处理
#import <UIKit/UIKit.h>

@interface HFBaseViewController : UIViewController

@end
//////////

@interface HFBaseViewController ()

@end

@implementation HFBaseViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor colorWithConfigKey:@"bg_white"];
    if (!self.fd_prefersNavigationBarHidden) {
        [self setDefaultBackButtonItem];
    }
    if (@available(iOS 11.0, *)) {
        [UIScrollView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    } else {
        self.automaticallyAdjustsScrollViewInsets = NO;
    }
    self.edgesForExtendedLayout = UIRectEdgeNone; //防止tabbar遮挡视图
}
#pragma mark - 显示tabbar动画
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];if ([FIRWalletHomeVC isTypeLegal:self]
     || [FIRMarketVC isTypeLegal:self]
     || [FIRMineVC isTypeLegal:self]) {
        self.tabBarController.tabBar.alpha = 1.0;
        self.tabBarController.tabBar.hidden = NO;
        return ;
    }
    [UIView animateWithDuration:0.5 animations:^{
        self.tabBarController.tabBar.alpha = 0.0;
        self.tabBarController.tabBar.hidden = YES;
    } completion:^(BOOL finished) {
        //none
    }];

}

以上。

github 上放了源码:clone后 直接pod update 就能运行

地址:HFCustomTabbarDemo

原文地址:https://www.cnblogs.com/someonelikeyou/p/9589074.html

时间: 2024-10-05 01:17:02

iOS 自定义滑动切换TabbarItem 觉得设计丑也要做出来的UI效果。。。的相关文章

iOS 自定义滑动切换TabBar

貌似经常会用到,自己整理收藏起来,方便日后查找备用. 效果如图: 由于制作gif,调整了属性,所以看起来的效果不好.如果用默认配置,生成的gif会很大. 制作gif: 1.使用QuickTimePlayer ,mac上插上iPhone, 然后进行屏幕录制,但是要选择插上的iPhone,然后会自动在Mac弹出同步的iPhone屏幕,点击录制. 2.使用GIFBrewery,选中录制文件*.mov, 进行生成gif. 代码如下: #import "XPBaseView.h" @protoc

IOS 自定义 滑动返回 手势

/** 只需要在你自定义的导航控制器中,改成如下代码即可,自定义手势返回 */ #define KEY_WINDOW [[UIApplication sharedApplication] keyWindow] #define kScreenW KEY_WINDOW.bounds.size.width #define kAnimateDuration 0.3 #define kDefaultAlapa 0.5 #define kDefaultScale 0.95 #define iOS7 ([UI

IOS自定义场景切换动画。

IOS中我们可以通过Storyborad以及segue来实现我们自己的场景切换动画,新建项目使用Single View Application模板并取名为MyCustomSegue. 使用storyboard托出另一UIViewController并分设置两个控制器的视图颜色,并设置跳转页面的segue为custom 设置如图 新建文件MyCustomChangeSegue并重新perform方法 1 @implementation MyCustomChangeSegue 2 3 -(void)

iOS 自定义页面的切换动画与交互动画

在iOS7之前,开发者为了寻求自定义Navigation Controller的Push/Pop动画,只能受限于子类化一个UINavigationController,或是用自定义的动画去覆盖它.但是随着iOS7的到来,Apple针对开发者推出了新的工具,以更灵活地方式管理UIViewController切换. 自定义导航栏的Push/Pop动画 为了在基于UINavigationController下做自定义的动画切换,先建立一个简单的工程,这个工程的rootViewController是一个

iOS开发之多表视图滑动切换示例(仿&quot;头条&quot;客户端)

好长时间没为大家带来iOS开发干货的东西了,今天给大家分享一个头条新闻客户端各个类别进行切换的一个示例.在Demo中对所需的组件进行的简单封装,在封装的组件中使用的是纯代码的形式,如果想要在项目中进行使用,稍微进行修改即可. 废话少说,先介绍一下功能点,下图是整个Demo的功能点,最上面左边的TabBarButtonItem是用来减少条目的,比如下图有三个按钮,点击减号会减少一个条目.右边的为增加一个条目.点击相应的按钮是切换到对应的表视图上,下方红色的是滑动的指示器,同时支持手势滑动.运行具体

[iOS]通过UIScrollView和UIPageControl实现滑动切换的效果

UIPageControl是自带的控件,可以查看官方文档,下载官方示例学习. 如果对Xcode自带的文档不熟悉可以参见:苹果Xcode帮助文档阅读指南 接下来是我学习笔记,使用Storyboard实现滑动切换的效果. ----------------------------------------------------------------------------- 新建一个项目,拖上一个UIScrollView和UIPageControl,并且建立关联: 新建一个ContentViewCo

Android自定义顶部栏及侧滑菜单和fragment+viewpag滑动切换的实现

嘿嘿嘿,关于android滑动的操作,是不是经常都会用到呢. 我肯定也要学习一下啦. https://blog.csdn.net/u013184970/article/details/82882107 https://blog.csdn.net/qq_35820350/article/details/82460376 在网上学习了一下,这两篇文章写的不错. 来看一下效果 共有4各部分 1.自定义顶部栏 2.侧滑菜单 3.弹出菜单 4.标签滑动切换 进入具体实现环节啦 第一 .自定义顶部栏 1.先

iOS彩票项目--第五天,新特性引导页的封装、返回按钮的自定义、导航控制器的滑动返回以及自定义滑动返回功能

一.上次实现了在AppDelegate中通过判断app版本决定是否进入新特性页面,今天将AppDelegate中的一坨进行了封装.将self.window的根控制器到底应该为新特性界面,还是主页面,封装到了导航工具类ChaosGuideTool 封装,先决定外面怎么用,然后实现方法.外部通过类方法调用  + (UIViewController *)chooseRootVC; 外部的APPDelegate 只是调用方法 之前的业务判断没有改变,只是将数据的存储进行了封装 二.返回按钮的自定义 <1

Android之fragment点击切换和滑动切换结合

学了一小段时间的Android,主要接触的是UI设计,打交道最多莫过于fragment了吧.在Android3.0引入了fragment的概念后,几乎在所以的Android的应用中都可以看见其身影,已经有很多前辈高人都已经详细介绍过fragmrnt,我这里就不多说什么了. 这里本来是想模仿一下微信的切换效果,怎奈水平不足,这里就献丑贴出半成品的代码,希望有大神能指点一下.废话不多说,上代码.先从简单的开始吧,这里是我一共用了3个fragment,这里就只贴出第一个的fragment的布局,别的两