iOS 网易彩票-1框架搭建
仿网易彩票,最终要做成的效果如下:

一、分层搭建
1.新建一个项目,Lottery.只支持7.1以上坚屏。

2.将素材全部图片全部拉到相应的文件夹里。

3.选中Lottery--右键Show in Finder ,在Lottery文件夹下新建一个Classes,并分别分层成MVC文件夹。

4.把Classes拉到Lottery项目里,整个框架结构如

二、UI搭建
分层好之后,接下来,我们搭建一下界面。使用Storyboard进行搭建。
1.点击Main.storyboard,删除原来的界面,分别拉入TabBar Controller和5个Navigation Controller。删除Navigation Controller自带的TableViewController,我们拉入自己的ViewController.
TabBar Controller与Navigation Controller关联
Navigation Controller与View Controller 关联


2.分别修改Navigation Controller与View Controller的显示名称


3.最终界面的导航效果

4.运行后的效果

三、代码实现
UI搭建完之后,我们发现系统自带的底部的导航栏,点击是蓝色,设置不了整一块的图片。因此,接下来,我们是自定义一个底部导航栏。
1.自定义一个MJTabBarController ,继承UITabBarController
MJTabBarController.m
#import "MJTabBarController.h" @interface MJTabBarController ()
/**
* 记录当前选中的按钮
*/
@property (nonatomic, weak) UIButton *selectedButton;
@end @implementation MJTabBarController - (void)viewDidLoad {
[super viewDidLoad]; // 1.移除系统自带的tabbar
[self.tabBar removeFromSuperview]; // 2.添加自己的tabbar
UIView *myTabBar = [[UIView alloc] init];
myTabBar.frame = self.tabBar.frame;
myTabBar.backgroundColor = [UIColor greenColor];
[self.view addSubview:myTabBar]; // 3.添加5个按钮
for (int i = ; i<; i++) {
// 创建按钮
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.tag = i; // 设置图片
NSString *name = [NSString stringWithFormat:@"TabBar%d", i + ];
[button setBackgroundImage:[UIImage imageNamed:name] forState:UIControlStateNormal]; NSString *selectedName = [NSString stringWithFormat:@"TabBar%dSel", i + ];
[button setBackgroundImage:[UIImage imageNamed:selectedName] forState:UIControlStateSelected]; // 设置frame
CGFloat buttonY = ;
CGFloat buttonW = myTabBar.frame.size.width * 0.2;
CGFloat buttonH = myTabBar.frame.size.height;
CGFloat buttonX = i * buttonW;
button.frame = CGRectMake(buttonX, buttonY, buttonW, buttonH); // 添加
[myTabBar addSubview:button]; // 监听
[button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchDown]; // 默认选中第0个位置的按钮(点击了这个按钮)
if (i == ) {
[self buttonClick:button];
}
}
}
/**
* 监听按钮点击
*/
- (void)buttonClick:(UIButton *)button
{
// 1.让当前选中的按钮取消选中
self.selectedButton.selected = NO; // 2.让新点击的按钮选中
button.selected = YES; // 3.新点击的按钮就成为了"当前选中的按钮"
self.selectedButton = button; // 4.切换子控制器
self.selectedIndex = button.tag;
}
@end
运行效果:

源代码下载:点击下载
iOS 网易彩票-1框架搭建的更多相关文章
- iOS 网易彩票-2框架搭建-代码重构
在上一篇中,我们基本已经把整个框架都搭建出来了,下面进行代码重构一下. 思路: 导航按钮,按下时,会变灰,那是系统自带了,通过自定义UIButton,实现按下按钮立即切换效果. MJTabBarCon ...
- iOS 网易彩票-6设置模块三(常用小功能)
该篇文章中,用到很多iOS开发过程中常用的小功能,当前只是将这些功能集成到网易彩票的设置中.iOS-常用小功能介绍,请参考我的另一篇文章: iOS 常用小功能 总结:http://www.cnblog ...
- iOS 网易彩票-4设置模块一
概述 基本上,每一款APP都有相应的设置模块.怎么设置才能更灵活和通用呢,这也是大家一直思考的.下面说说在网易彩票中,设置模块的设置思想. 基本上有三种方案: static cell(呆板,完全没有动 ...
- iOS 网易彩票-5设置模块二
产品推荐 产品推荐使用的是UICollectionView控件,UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视 ...
- iOS 网易彩票-3常见设置
Navigation导航设置 为了统一管理导航控制器,需要自定义导航控制器MJNavigationController,继承于UINavigationController.分别设置5个Navigati ...
- 再造轮子之网易彩票-第一季(IOS 篇 by sixleaves)
前言 在网上看了别人做的模仿网易彩票的项目, 于是也跟着用自己的想法做了一篇.写这篇博客的目的, 在于UI综合的一次小练习, 同时总结和串联其各个控件之间的应用.封装思想等.考虑到有人上不了githu ...
- iOS项目——基本框架搭建
项目开发过程中,在完成iOS项目——项目开发环境搭建之后,我们首先需要考虑的就是我们的项目的整体框架与导航架构设计,然后在这个基础上考虑功能模块的完成. 一 导航架构设计 一款App的导航架构设计应该 ...
- iOS 从零到一搭建组件化项目框架
随着公司业务需求的不断迭代发展,工程的代码量和业务逻辑也越来越多,原始的开发模式和架构已经无法满足我们的业务发展速度了,这时我们就需要将原始项目进行一次重构大手术了.这时我们应该很清晰这次手术的动刀口 ...
- iOS 从0到1搭建高可用App框架
iOS 从0到1搭建高可用App框架 最近在搭建新项目的iOS框架,一直在思考如何才能搭建出高可用App框架,能否避免后期因为代码质量问题的重构.以前接手过许多“烂代码”,架构松散,底层混乱,缺少规范 ...
随机推荐
- jQuery的回调管理机制
// 对option的一个缓存,避免每次都需要createOptions,option是创建Callback对象时的传入的参数// 每个option被存入optionsCache中类似于{memory ...
- win8/win7中使用Git Extensions PuTTy模式提交时 git-credential-winstore.exe": No such file or directory 错误解决方案
参考:http://www.cnblogs.com/hlizard/p/3627792.html 报错类似以下错误 \"F:/GitExtensions/GitCredentialWinSt ...
- 【咸鱼教程】Egret中可长按复制的文本(例如复制优惠码)
一 实际效果二 实现原理三 源码下载 在egret中实现长按复制文本效果,一般用于复制优惠码什么的. 一 实际效果 二 实现原理 在egret的游戏元素都是绘制在canvas上的,我们 ...
- [工具] 知网(CNKI)文献下载工具
https://github.com/amyhaber/cnki-downloader 用于免费搜索,下载CNKI上的各类文献资料
- iOS - 开源框架、项目和学习资料汇总(网络篇)
网络连接 1. AFNetworking – ASI不升级以后,最多人用的网络连接开源库,[推荐]iOS网络编程之AFNetworking使用,iOS开发下载文件速度计算.2. Alamofire – ...
- POJ-1887 Testing the CATCHER(dp,最长下降子序列)
Testing the CATCHER Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 16515 Accepted: 6082 ...
- 关于Python的集合set
网上那么多说创建集合的语句是: >>>a=set([1,2,3]) python 3.6.3,你们真的能运行吗? 我这里报: Traceback (most recent call ...
- 2016江苏省CPC省赛 I - Itinerary Planning
Description Mike moved to a new city. There are bus stations in the city, each has a unique name. Ea ...
- NLP-python 自然语言处理01
# -*- coding: utf-8 -*- """ Created on Wed Sep 6 22:21:09 2017 @author: Administrator ...
- TensorFlow 实现分类操作的函数学习
函数:tf.nn.sigmoid_cross_entropy_with_logits(logits, targets, name=None) 说明:此函数是计算logits经过sigmod函数后的交叉 ...