DJTabbarButton.m

#import "DJTabbarButton.h"

@implementation DJTabbarButton

- (instancetype)initWithFrame:(CGRect)frame {

    if (self = [super initWithFrame:frame]) {
[self setBackgroundImage:[UIImage imageNamed:@"tabbar_separate_selected_bg"] forState:UIControlStateDisabled];
self.imageView.contentMode = UIViewContentModeCenter; /* 设置当按钮不可用或高亮状态时不要修改图片 */
self.adjustsImageWhenDisabled = NO;
self.adjustsImageWhenHighlighted = NO;
// self.backgroundColor = [UIColor greenColor];
}
return self;
} - (void)layoutSubviews { [super layoutSubviews]; if (DJLandscape) { // 横屏 /* imageView */
self.imageView.x = ;
self.imageView.y = ;
self.imageView.width = self.width * 0.4;
self.imageView.height = self.height; /* titleLabel */
self.titleLabel.hidden = NO;
self.titleLabel.x = self.imageView.width;
self.titleLabel.y = ;
self.titleLabel.width = self.width - self.imageView.width;
self.titleLabel.height = self.height; } else { // 竖屏 /* imageView */
self.imageView.frame = self.bounds;
/* titleLabel */
self.titleLabel.hidden = YES;
}
} /* 设置按钮无高亮状态 */
- (void)setHighlighted:(BOOL)highlighted { } @end

DJHomeViewController.m

// 添加子控制器
- (void)setupChildViewControllers { for (int i = ; i < ; i++) {
UIViewController *childVC = [[UIViewController alloc] init];
childVC.view.backgroundColor = DJRandomColor;
[self addChildViewController:childVC];
}
} - (void)replaceCurrentShowingController:(DJTabBarIndex)index { // 将当前显示的子控制器的View从界面上移除
[self.showingChildVc.view removeFromSuperview];
UIViewController *newShowingVc;
switch (index) {
case DJTabBarIndexAllStatus: // 全部动态
newShowingVc = self.childViewControllers[];
break;
case DJTabBarIndexWithMe: // 与我相关
newShowingVc = self.childViewControllers[];
break;
case DJTabBarIndexPhotoWall: // 照片樯
newShowingVc = self.childViewControllers[];
break;
case DJTabBarIndexPhotoFrame: // 电子相框
newShowingVc = self.childViewControllers[];
break;
case DJTabBarIndexFriend: // 好友
newShowingVc = self.childViewControllers[];
break;
case DJTabBarIndexMore: // 更多
newShowingVc = self.childViewControllers[];
break;
} newShowingVc.view.x = self.menuView.width;
newShowingVc.view.y = ;
newShowingVc.view.width = self.view.width - self.menuView.width;
newShowingVc.view.height = self.view.height;
[self.view addSubview:newShowingVc.view];
self.showingChildVc = newShowingVc; } - (void)updateSubViewFrameInLandscape { /* menuView */
self.menuView.width = DJMenuViewLW;
self.menuView.height = DJScreenLH;
self.menuView.x = ;
self.menuView.y = ; /* showingChildVc */
self.showingChildVc.view.x = self.menuView.width;
self.showingChildVc.view.y = ;
self.showingChildVc.view.width = DJScreenLW - self.menuView.width;
self.showingChildVc.view.height = DJScreenLH; } - (void)updateSubViewsViewFrameInPortrait { /* menuView */
self.menuView.width = DJMenuViewPW;
self.menuView.height = DJScrrenPH;
self.menuView.x = ;
self.menuView.y = ; /* showingChildVc */
self.showingChildVc.view.x = self.menuView.width;
self.showingChildVc.view.y = ;
self.showingChildVc.view.width = DJScreenPW - self.menuView.width;
self.showingChildVc.view.height = DJScrrenPH; }
// 当屏幕方向将会发生改变时调用此方法
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) { // 横屏
[self updateSubViewFrameInLandscape];
} else { // 竖屏
[self updateSubViewsViewFrameInPortrait];
} // 设置当前子控制器的View不拉伸
self.showingChildVc.view.autoresizingMask = UIViewAutoresizingNone; }

最终效果:

QQ空间HD(6)-实现自定义的选项卡切换效果的更多相关文章

  1. 仿网易/QQ空间视频列表滚动连播炫酷效果

    代码地址如下:http://www.demodashi.com/demo/11201.html 一.准备工作 AndroidStudio 开发环境 需要下载七牛的开源播放器SDK 本例子实现了仿网易/ ...

  2. 使用ViewPager+Fragment实现选项卡切换效果

    实现效果 本实例主要实现用ViewPage和Fragment实现选项卡切换效果,选项卡个数为3个,点击选项卡或滑动屏幕会切换Fragment并实现选项卡下方下边框条跟随移动效果. 本程序用androi ...

  3. 使用jquery实现选项卡切换效果

    几张简陋的框架效果图 页面加载时: 选项卡操作后: css样式: <style type="text/css"> *{margin:0px;padding:0px;} ...

  4. 用html+css+js实现选项卡切换效果

    文章转载自:http://tongling.github.io/JSCards/ 用html+css+js实现选项卡切换效果 使用之前学过的综合知识,实现一个新闻门户网站上的常见选项卡效果: 文字素材 ...

  5. [前端] html+css+javascript 实现选项卡切换效果

    用html+css+js实现选项卡切换效果使用之前学过的综合知识,实现一个新闻门户网站上的常见选项卡效果: 文字素材:房产: 275万购昌平邻铁三居 总价20万买一居 200万内购五环三居 140万安 ...

  6. JS实现选项卡切换效果

    1.在网页制作过程中,我们经常会用到选项卡切换效果,它能够让我们的网页在交互和布局上都能得到提升 原理:在布局好选项卡的HTML结构后,我们可以看的出来,选项卡实际上是三个选项卡标头和三个对应的版块, ...

  7. 纯js实现网页tab选项卡切换效果

    纯js实现网页tab选项卡切换效果 百度搜索     js 点击菜单项就可以切换内容的效果

  8. vue实现tab选项卡切换效果

    tab选项卡切换效果: 通过点击事件传入参数,然后通过v-show来进行切换显示 <template> <div class="box"> <div ...

  9. vue实现选项卡切换效果

    效果如下: 说明: 这里我使用的原理是利用vue中的v-show/显示隐藏指令,当为true的时候显示,为false的时候隐藏 1html代码: <head> <meta chars ...

随机推荐

  1. 修改AndroidStudio中的Logcat中的默认设置

    按Ctrl+Alt+S打开Settings 在左上角的输入框中输入Locat 点右边的使用内部样式取消掉,好了,开始自定义吧.

  2. hdu5317 RGCDQ (质因子种数+预处理)

    RGCDQ 题意:F(x)表示x的质因子的种数.给区间[L,R],求max(GCD(F(i),F(j)) (L≤i<j≤R).(2<=L < R<=1000000) 题解:可以 ...

  3. C语言中结构体赋值问题的讨论

    今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...

  4. one to many

    @OneToMany(mappedBy="order",fetch=FetchType.EAGER,cascade={CascadeType.ALL})    private Li ...

  5. Error:Execution failed for task ':app:transformClassesWithDexForDebug'解决记录

    转载请标明出处: http://blog.csdn.net/lxk_1993/article/details/50511172 本文出自:[lxk_1993的博客]:   3个错误non-zero e ...

  6. 微信小程序入门正确姿势(一)

    [未经作者本人同意,请勿以任何形式转载] >>>前言 这是 [认真学编程] 系列的 第4篇 文章(微信小程序入门系列),欢迎点赞分享.写留言,这些都是对我最好的支持. 本系列适合有一 ...

  7. jquery表格动态增删改及取数据绑定数据完整方案

    一 前言 上一篇Jquery遮罩插件,想罩哪就罩哪! 结尾的预告终于来了. 近期参与了一个针对内部员工个人信息收集的系统,其中有一个需求是在填写各个相关信息时,需要能动态的增加行当时公司有自己的解决方 ...

  8. oracle 32位导64位

    oracle 32位导64位 SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER SYSTEM ENABLE RESTRICTED SESSION; ; ; ALTER ...

  9. 基于redis和docker的guestbook留言簿案例

    在正式介绍之前,大家有必要先理解Kubernetes几个核心概念及其承担的功能.以下为Kubernetes的架构设计图: 1. Pods在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是 ...

  10. 微信菜单php 数组格式

    //备用 $menu['button']['0']['name'] = '积分'; $menu['button']['0']['sub_button']['0']['type'] = 'view'; ...