QQ空间HD(6)-实现自定义的选项卡切换效果
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)-实现自定义的选项卡切换效果的更多相关文章
- 仿网易/QQ空间视频列表滚动连播炫酷效果
代码地址如下:http://www.demodashi.com/demo/11201.html 一.准备工作 AndroidStudio 开发环境 需要下载七牛的开源播放器SDK 本例子实现了仿网易/ ...
- 使用ViewPager+Fragment实现选项卡切换效果
实现效果 本实例主要实现用ViewPage和Fragment实现选项卡切换效果,选项卡个数为3个,点击选项卡或滑动屏幕会切换Fragment并实现选项卡下方下边框条跟随移动效果. 本程序用androi ...
- 使用jquery实现选项卡切换效果
几张简陋的框架效果图 页面加载时: 选项卡操作后: css样式: <style type="text/css"> *{margin:0px;padding:0px;} ...
- 用html+css+js实现选项卡切换效果
文章转载自:http://tongling.github.io/JSCards/ 用html+css+js实现选项卡切换效果 使用之前学过的综合知识,实现一个新闻门户网站上的常见选项卡效果: 文字素材 ...
- [前端] html+css+javascript 实现选项卡切换效果
用html+css+js实现选项卡切换效果使用之前学过的综合知识,实现一个新闻门户网站上的常见选项卡效果: 文字素材:房产: 275万购昌平邻铁三居 总价20万买一居 200万内购五环三居 140万安 ...
- JS实现选项卡切换效果
1.在网页制作过程中,我们经常会用到选项卡切换效果,它能够让我们的网页在交互和布局上都能得到提升 原理:在布局好选项卡的HTML结构后,我们可以看的出来,选项卡实际上是三个选项卡标头和三个对应的版块, ...
- 纯js实现网页tab选项卡切换效果
纯js实现网页tab选项卡切换效果 百度搜索 js 点击菜单项就可以切换内容的效果
- vue实现tab选项卡切换效果
tab选项卡切换效果: 通过点击事件传入参数,然后通过v-show来进行切换显示 <template> <div class="box"> <div ...
- vue实现选项卡切换效果
效果如下: 说明: 这里我使用的原理是利用vue中的v-show/显示隐藏指令,当为true的时候显示,为false的时候隐藏 1html代码: <head> <meta chars ...
随机推荐
- android Dialog实例
Dialog类 public class DialogUtil { public static Dialog EditDialog(Activity context,View view){ final ...
- 【转】iframe和父页,window.open打开页面之间的引用
[转]iframe和父页,window.open打开页面之间的引用 iframe和父页,window.open打开页面和被打开页面之间的关系可以通过下面的对象获取到 1)通过iframe加载的,在if ...
- [转]Python 字符串操作实现代码(截取/替换/查找/分割)
原文地址:http://www.jb51.net/article/38102.htm ps:好久没更新python代码了,这次用到了字符串,转来看看 Python 截取字符串使用 变量[头下标:尾下标 ...
- [WPF系列]-数据邦定之DataTemplate 使用 DataTrigger 来应用属性值
使用 DataTrigger 来应用属性值 当前表示不会告诉我们某个 Task 是家庭任务还是办公室任务.记住 Task 对象拥有类型为 TaskType 的 TaskType 属性,该类型是一个枚举 ...
- Machine Learning Algorithms Study Notes(6)—遗忘的数学知识
机器学习中遗忘的数学知识 最大似然估计( Maximum likelihood ) 最大似然估计,也称为最大概似估计,是一种统计方法,它用来求一个样本集的相关概率密度函数的参数.这个方法最早是遗传学家 ...
- OpenStack 企业私有云的若干需求(2):自动扩展(Auto-scaling) 支持
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
- python-网络编程-socket编程
一.TCP\IP(网络通信协议)简介 TCP:(Transmission Control Protocol)传输控制协议,面向有连接的通信协议 UDP:数据报文协议,面向无连接的通信协议 ...
- 使用 v-cloak 防止页面加载时出现 vuejs 的变量名
使用 vuejs 做了一个简单的功能页面,逻辑是,页面加载后获取当前的经纬度,然后通过 ajax 从后台拉取附近的小区列表.但是 bug 出现了,在显示小区列表之前,会闪现小区名对应的 vuejs 变 ...
- JAVA格物致知基础篇:你所不知道的返回码
上篇我们主要讲解利用Jersey组件如何来写一个能保证基本运行的Rest Service, 之所以说能够基本运行是因为接口暴露及其简易,一旦遇到其他的情况了,就无法正确的处理我们的请求.同时,这个接口 ...
- .NET Core 1.0 RC2 历险之旅
文章背景:对于.NET Core大家应该并不陌生, 从它被 宣布 到现在已经有1-2年的时间了,其比较重要的一个版本1.0 RC2 也即将发布..Net Core从一个一个的测试版到现在的RC2,经历 ...