首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UITabBarController图标在触摸时改变高度

UITabBarController是iOS开发中常用的控制器之一,用于实现底部标签栏导航功能。当用户触摸UITabBarController中的标签图标时,可以通过改变图标的高度来提供视觉反馈。

具体实现方式可以通过以下步骤来完成:

  1. 创建UITabBarController对象,并设置其代理为当前控制器。
  2. 实现UITabBarControllerDelegate协议中的方法tabBarController(_:shouldSelect:),该方法在用户点击标签图标时被调用。
  3. tabBarController(_:shouldSelect:)方法中,获取当前选中的标签索引和即将选中的标签索引。
  4. 遍历UITabBarController的子视图控制器数组,找到即将选中的标签对应的视图控制器。
  5. 在即将选中的视图控制器中,找到对应的标签图标,并修改其高度属性。
  6. 返回true,允许选中标签。

以下是一个示例代码:

代码语言:swift
复制
class ViewController: UIViewController, UITabBarControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let tabBarController = UITabBarController()
        tabBarController.delegate = self
        
        // 创建并设置子视图控制器
        
        self.addChild(tabBarController)
        self.view.addSubview(tabBarController.view)
        tabBarController.didMove(toParent: self)
    }
    
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        guard let tabBarItems = tabBarController.tabBar.items else {
            return true
        }
        
        let selectedIndex = tabBarController.selectedIndex
        let willSelectIndex = tabBarController.viewControllers?.firstIndex(of: viewController) ?? NSNotFound
        
        if willSelectIndex != NSNotFound && willSelectIndex != selectedIndex {
            let selectedTabBarItem = tabBarItems[selectedIndex]
            let willSelectTabBarItem = tabBarItems[willSelectIndex]
            
            // 修改选中和即将选中的标签图标高度
            selectedTabBarItem.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: -10, right: 0)
            willSelectTabBarItem.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0)
        }
        
        return true
    }
}

这样,在用户触摸UITabBarController的标签图标时,选中的标签图标高度会发生变化,从而提供了视觉反馈。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动应用分析(MTA):提供移动应用数据分析服务,帮助开发者了解用户行为和应用性能。产品介绍链接
  • 腾讯云云服务器(CVM):提供可扩展的云服务器实例,适用于各种应用场景。产品介绍链接
  • 腾讯云对象存储(COS):提供安全可靠的云端存储服务,适用于存储和处理各种类型的文件和数据。产品介绍链接
  • 腾讯云人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。产品介绍链接
  • 腾讯云区块链(BCBaaS):提供基于区块链技术的可信数据存储和交易服务,适用于金融、供应链等领域。产品介绍链接
  • 腾讯云云原生容器服务(TKE):提供高度可扩展的容器化应用管理平台,简化容器部署和管理。产品介绍链接

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Cocoa编程中视图控制器与视图类详解

UIImageView UIWebView MKMapViews UIScrollView 可选择的视图(以下两个视图类实例都是模态显示的): UIAlertView UIActionSheet  所有控件(控件是将用户触摸转换为回调触发器的屏幕对象...UITabBarController类       选项卡类允许用户多个视图控制器之间移动并在屏幕的底部可定制该栏。...一、创建UITabBarController 常见的应用程序委托类的applicationDidFinishLaunching:方法中创建,这通常可为应用窗口提供根视图。...控制器加载视图过程 当调用视图控制器的view属性,视图控制器会先调用loadView方法加载视图,因此,可以loadView方法中创建所有的视图,这是比较好的编程惯例。...事件处理 如图所示,一般情况下,当一个视图不响应用户事件,它会将事件传递给它的父视图。但是,当视图被视图控制器管理,它会将事件首先传递给视图控制器。

5.1K50
  • iOS开发中标签控制器的使用——UITabBarController

    iOS开发中标签控制器的使用——UITabBarController 一、引言         与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是...,导航的管理方式是纵向的,采用push与pop切换控制器,标签的管理是横向的,通过标签的切换来改变控制器,一般我们习惯将tabBar作为应用程序的根视图控制器,在其中添加导航,导航中在对ViewController...二、创建一个标签控制器         通过如下的步骤,我们可以很简便的创建一个TabBarController: UITabBarController * tabBar= [[UITabBarController...,//高级图标     UITabBarSystemItemRecents,//最近图标     UITabBarSystemItemContacts,//联系人图标     UITabBarSystemItemHistory...,//下载图标     UITabBarSystemItemMostRecent,//记录图标     UITabBarSystemItemMostViewed,//全部查看图标 }; UITabBarItem

    1.6K20

    【IOS开发基础系列】Storyboard专题

    它要求应用程序启动需要加载的故事板文件名。...首先增加 cell 的高度为55 像素。拖拽它下端的拉柄可以改变它的高度,也可以修改Size 面板中的Row height 值。             ...如果你用拖拽而不是直接键入的方式改变cell 的高度,tableview 的 Row Height 属性也会自动随之改变。         再次运行程序,这次看起来就好多了。...例如,当你需要表格行能够被删除或移动 ,Cell 尺寸会发生改变。         ...Label 的 Autosizing 设置如下,因此当 cell 尺寸改变,Label 的尺寸也随之变化:         经过这些调整,删除按钮的出现会将星级图标挤到左边:         你也可以删除按钮出现时让星星们消失

    1.1K30

    iOS多控制器之UINavigationController&UITableBarController1. 多控制器2. UINavigationController3. UITableBarCont

    多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单 当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个view,可以用一个大的view去管理1个或者多个小view...@property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem; 2.6 UINavigationController常见问题 导航条高度...那么应该找 navigationbBar 如果想改变导航条上内容找 navigationItem 3....UITabBarButtonUITabBar中得位置是均分的,UITabBar的高度为49。 UITabBar的结构⼤大致如下图所示: ?...Paste_Image.png 7.2.3 往UITabBarController中添加子控制器 有两种方法UITabBarController中添加子控制器 : [tb addChildViewController

    1.3K40

    移动应用界面设计的尺寸规范「建议收藏」

    根据单位换算方法,可总结出: 当运行在mdpi下,1dp=1px :也就是说设计师PS里定义一个item高48px,开发就会定义该item高48dp ; 当运行在hdpi模式下,1dp=1.5px...app有通知,要提供一个有新通知显示状态栏的通知图标。...如果你设计的元素高和宽至少48dp,你就可以保证: (1)触摸目标绝不会比建议的最低目标(7mm)小,无论什么屏幕上显示。 (2)整体信息密度和触摸目标大小之间取得了一个很好的平衡。...iPhone界面上元素的定位、尺寸是通过一个单位point,而非px,屏幕上固定有320x480pt,retina屏两倍的分辨率改变的只是pt和px之间的比例而已,这样就能实现不改变程序,只上传两套图片就兼容两个分辨率...例外情况是两个标题样式,最小、小和中等设置都使用相同字体大小、行间距和字间距。 – 最小的三种文字大小中,字间距相对宽阔;最大的三种文字大小中,字间距相对紧密。

    4.8K20

    【总结】移动应用界面设计的尺寸设置及规范

    根据单位换算方法,可总结出: 当运行在mdpi下,1dp=1px :也就是说设计师PS里定义一个item高48px,开发就会定义该item高48dp ; 当运行在hdpi模式下,1dp=1.5px...d、通知图标 如果app有通知,要提供一个有新通知显示状态栏的通知图标。整体大小为24 x 24 dp ,图形实际区域为 22 x 22 dp 。 ?...如果你设计的元素高和宽至少48dp,你就可以保证: (1)触摸目标绝不会比建议的最低目标(7mm)小,无论什么屏幕上显示。 (2)整体信息密度和触摸目标大小之间取得了一个很好的平衡。...iPhone界面上元素的定位、尺寸是通过一个单位point,而非px,屏幕上固定有320x480pt,retina屏两倍的分辨率改变的只是pt和px之间的比例而已,这样就能实现不改变程序,只上传两套图片就兼容两个分辨率...例外情况是两个标题样式,最小、小和中等设置都使用相同字体大小、行间距和字间距。 – 最小的三种文字大小中,字间距相对宽阔;最大的三种文字大小中,字间距相对紧密。

    3.5K40

    iOS小技能:设置状态栏背景颜色(图片)

    越透明越明显;经过一番查找,终于发现问题: 问题: 1、iOS 13之前,可以通过valueForKey 获取UIApplication的statusBar,因为UIApplication是单例,因此,iOS...通过上面的代码获取statusBar,发现每次每次获取都调用 alloc:init的方法,重新生成一个statusBar;然后添加到UIApplication的keyWindow上,再设置背景颜色。...; NSLog(@"导航栏高度:%f",navHeight); //获取tabBar的高度 //1.tabBarController中使用(你的继承自UITabBarController的VC) CGFloat...tabBarHeight = self.tabBar.frame.size.height; NSLog(@"tabBar高度:%f",tabBarHeight); //2.非tabBarController...中使用 UITabBarController *tabBarVC = [[UITabBarController alloc] init];//(这儿取你当前tabBarVC的实例) CGFloat tabBarHeight

    1.9K40

    jquery nicescroll 配置参数

    9999 scrollspeed - 滚动速度,默认值为60 mousescrollstep - 高速滚动鼠标滚轮,默认值是40(像素) touchbehavior - 使光标拖动滚动像在台式电脑触摸设备...双击对话框(默认:true) gesturezoom - (仅当boxzoom =真实,使用触摸设备)上缩放框激活,间距输出/输入(默认:true) grabcursorenabled,显示“抢”...图标的div touchbehavior = true,(默认:true) autohidemode,如何隐藏滚动条的作品,真=默认/“光标”=只进游标隐藏/ false =不隐藏背景,CSS改变轨道的背景下...,默认为“” iframeautoresize,加载事件AUTORESIZE的iframe(默认:true) cursorminheight,设置像素的最小光标高度(默认值:20) preservenativescrolling...sensitiverail,点击轨道上进行滚动(默认:true) enablemouselockapi,可以用鼠标说明锁的API(对象拖动同样的问题)(默认:true) cursorfixedheight,用于光标像素设置固定的高度

    4.1K80

    简单了解下无障碍设计模式

    通过 UI 元素上添加描述性的标签,使用户可以通过声音应用中导航。当使用屏幕阅读器(如 “TalkBack” ),并通过触摸板导航,在用户指尖触摸到 UI 元素,会大声读出标签上的文本。...头像:40dp 图标:24dp 两者的触摸目标:48dp 触摸目标示例 触摸目标高度:48dp 按钮高度:36dp 触摸目标和按钮示例 分组项目 把相关的项目放在一起,对那些视力低下或者屏幕上聚焦困难的用户是有帮助的... TalkBack 中,这称为线性导航。 用户可以 “通过触摸浏览” 和 “线性导航” 模式之间切换。当页面使用合适的语义化标签,一些无障碍技术允许用户页面的这些标记(例如标题)之间导航。...例如, TalkBack 中打开 “通过触摸浏览” ,并改变大声说出文本的速度。...错误示例 朗读,文本 “侧面抽屉” 无法指明会发生什么操作。 状态可以变化的元素 对于可以值和状态之间切换的图标,根据向用户呈现内容来确定使用什么类型的图标

    4.8K40

    Swift - Button,Label

    ,默认文字颜色为蓝色,有触摸的高亮效果 UIButtonType.DetailDisclosure:前面带“!”...图标按钮,默认文字颜色为蓝色,有触摸的高亮效果 UIButtonType.System:前面不带图标,默认文字颜色为蓝色,有触摸的高亮效果 UIButtonType.Custom:定制按钮,前面不带图标...,默认文字颜色为白色,无触摸的高亮效果 UIButtonType.InfoDark:为感叹号“!”...:触摸控件内拖动 TouchDragOutside:触摸控件外拖动 TouchDragEnter:触摸从控件之外拖动到内部 TouchDragExit:触摸从控件内部拖动到外部 TouchUpInside...:控件之内触摸并抬起事件 TouchUpOutside:控件之外触摸抬起事件 TouchCancel:触摸取消事件,即一次触摸因为放上太多手指而被取消,或者电话打断 */ Swift里Label

    1.7K20

    Swift 小仿微博列表

    \\]" //表情匹配 [爱心] 富文本是由原始字符串经过一系列的正则匹配到目标字符串后,再经过一系列的字符串高亮、删除、替换等处理得到的 注意:每一个匹配项完成字符串处理后可能会改变原有字符串的...NSRange,进而导致另一个匹配项的Range处理字符串出现越界的崩溃问题!...{ ranges.append(res.range) } return ranges } //计算富文本的高度 func...捏合放大缩小动画是由继承于UIScrollView的子类SLPictureZoomView完成;触摸点双击放大是根据触摸点在图片的位置和屏幕上的位置得到放大后的触摸点相对位置来实现的;拖拽过渡转场是根据手指在屏幕上的移动距离来调整...三、界面流畅度优化 网上关于界面流畅度优化的好文章还是挺多的,我在这里只记录下本文示例中用到的部分优化策略,基本上FPS60左右, 详情可以看代码: 1、cell高度异步计算和缓存 2、富文本异步正则匹配和结果缓存

    1.4K30

    iOS 知识小集(Status Bar变换)

    背景 iOS 中经常会有需要在某个界面改变状态栏颜色或者某个界面隐藏状态栏的需求。而改变状态栏颜色和控制状态栏显示和隐藏的API,iOS 的不同版本中也发生了很多变化。...API iOS 7 ~iOS 9 从iOS 7开始系统风格大变样,图标扁平了,状态栏也不在闹独立了。因为状态栏的会受到导航栏或者View背景色的影响,所以状态栏的风格也需要实时调整了。...想要改变状态栏的样式,想要控制状态栏的显示与隐藏,该怎么做呢? ** 1....UISegmentedControl的值响应的Action方法里改变上述property的值,再调用 -setNeedsStatusBarAppearanceUpdate即可。...但是使用UITabBarController依然正常,状态栏不受UITabBarController影响。

    1.3K21

    笔记22 | 学习整理开源APP(BaseAnimation)程序源码“中的通讯录效果(三)

    --- 3.目录 3.1 A-Z的字母索引 3.2 联系人界面ListView的数据填充 3.3 联系人的搜索 3.1 A-Z的字母索引 通过自定义一个View界面,绘制一个A-Z竖向排列的布局,通过触摸事件监听...,根据触摸的区域和字母高度的计算出position,再向联系人Listview提供一个方向输出position值!.../> MainActivity mClearEditText = (ClearEditText) findViewById(R.id.filter_edit); //根据输入框输入值的改变来过滤搜索...addTextChangedListener(this); } /** * 因为我们不能直接给EditText设置点击事件,所以我们用记住我们按下的位置来模拟点击事件 * 当我们按下的位置 ...EditText的宽度 - 图标到控件右边的间距 - 图标的宽度 和 * EditText的宽度 - 图标到控件右边的间距之间我们就算点击了图标,竖直方向没有考虑 */ @

    67340

    iOS 本地推送概念步骤:属性:点击通知跳到指定控制器界面快捷回复功能(iOS 8以后可用), category 属性的使用方法

    概念 1.推送通知有5种不同的呈现效果 屏幕顶部显示一块横幅(显示具体内容) 屏幕中间弹出一个UIAlertView(显示具体内容) 锁屏界面显示一块横幅(锁屏状态下,显示具体内容) 更新app图标的数字...(说明新内容的数量) 播放音效(提醒作用) 2.用户也可以决定是否要开启以下4个功能: 显示App图标数字 播放音效 锁屏显示 显示“通知中心” 3、注意: 发送推送通知,如果程序正在前台执行,那么推送通知就不会被呈现出来...锁屏界面效果 注意:这个值会改变两个地方,还会改变提醒的按钮文字 ?...NSString *selectIndex = localNotifi.userInfo[@"selectIndex"]; // 获取根控制器TabBarController UITabBarController...锁屏左滑效果 步骤: 1、发送通知,给通知对象设置一个 category 标识符,用于AppDelegate中的配置 localNotifi.category = @"category"; 2、AppDelegate

    2.6K60
    领券