Copyright © 2016 Apple Inc. 赵泰来的文物是真是假假?

iOS app制作步骤实例_IOS开发-织梦者
当前位置:&>&&>& > iOS app制作步骤实例
iOS app制作步骤实例
本文为您介绍iOS实战01的说明,具体操作请看面的内容
  去年放假之前大概完成了新浪微博项目,到现在也忘得差不多了,打算在重新写一遍。之前的一些笔记在新浪的博客SleenXiu,在这主要是把新浪微博以随笔的形式写在这,方便以后的复习。
  先看看之前主要完成的几个点,秒拍视频连接:/show?fid=b90b1bba7ba25cc546a06fa949
  今天开始重新写一遍,在这记下来。
  经典框架的搭建,所谓经典框架就是最底层为UITabBarController,管理几个UINavigationController,不同的UINavigationController又管理相应的VC。
  1.在appdelegate中完成初步的框架搭建,我们需要一个自定义的UITabBarController,并成为window的根控制器。
1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// 设置窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
// 初始化自己的tabbarController
SVTabbarController *tabbar = [[SVTabbarController alloc] init];
// 为窗口添加根控制器,
self.window.rootViewController =
// 显示窗口
[self.window makeKeyAndVisible];
return YES;
  2.对文件进行分组,按照模块分,下面的MVC结构。
  3.在自己的tabbarcontroller中为其添加子控制器[self addController],为方法编写代码。(后面会对这段代码进行优化)
1 // 添加子控制器
2 - (void)addController
SVHomeController *homeVC = [[SVHomeController alloc] init];
SVNavigationController *homeNav = [[SVNavigationController alloc] initWithRootViewController:homeVC];
homeVC.title = @&首页&;
homeVC.tabBarItem.image = [UIImage imageNamed:@&tabbar_home_os7&];
homeVC.tabBarItem.selectedImage = [UIImage imageNamed:@&tabbar_home_selected_os7&];
[self addChildViewController:homeNav];
SVHomeController *messageVC = [[SVHomeController alloc] init];
SVNavigationController *messageNav = [[SVNavigationController alloc] initWithRootViewController:messageVC];
messageVC.title = @&消息&;
messageVC.tabBarItem.image = [UIImage imageNamed:@&tabbar_message_center_os7&];
messageVC.tabBarItem.selectedImage = [UIImage imageNamed:@&tabbar_message_center_selected_os7&];
[self addChildViewController:messageNav];
SVHomeController *discoverVC = [[SVHomeController alloc] init];
SVNavigationController *discoverNav = [[SVNavigationController alloc] initWithRootViewController:discoverVC];
discoverVC.title = @&发现&;
discoverVC.tabBarItem.image = [UIImage imageNamed:@&tabbar_discover_os7&];
discoverVC.tabBarItem.selectedImage = [UIImage imageNamed:@&tabbar_discover_selected_os7&];
[self addChildViewController:discoverNav];
SVHomeController *meVC = [[SVHomeController alloc] init];
SVNavigationController *meNav = [[SVNavigationController alloc] initWithRootViewController:meVC];
meVC.title = @&我&;
meVC.tabBarItem.image = [UIImage imageNamed:@&tabbar_profile_os7&];
meVC.tabBarItem.selectedImage = [UIImage imageNamed:@&tabbar_profile_selected_os7&];
[self addChildViewController:meNav];
基本效果已经有了
  4.tabbar的导航不是想要的效果,删除系统自带的tabbaritem,添加自定义tabbar,[self addtabbar]。
1 // 移除系统的tabbar,view将要出现的时候删除掉原有tabbar上所有的item
2 - (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
for (UIView *child in self.tabBar.subviews) {
if ([child isKindOfClass:[UIColor class]]) {
[child removeFromSuperview];
12 // 增加自己的tabbar
13 - (void)addTabbar
// 初始化自己的tabbar
SVTabbar *tabbar = [[SVTabbar alloc] initWithFrame:self.tabBar.bounds];
// 保存自己的tabbar
self.mytabbar =
// 添加自己的tabbar
[self.tabBar addSubview:tabbar];
// 为tabbar添加代理
tabbar.delegate =
  5.封装自己的tabbar,添加控件,自定义按钮item,完成跳转
  5-1.添加控件,根据有多少个控制器添加相应个数的btn,而btn的相应值通过item进行传递,在tabbar中提供- (void)addBtnWithItem:(UITabbarItem)方法添加自己的item(btn)
1 - (void)addBtnWithItem:(UITabBarItem *)item
// 初始化btn
SVTabbarButton *btn = [[SVTabbarButton alloc] init];
// 保存btn
[self.tabbarBtns addObject:btn];
// 赋值btn
btn.item =
// 添加btn
[self addSubview:btn];
// 为按钮绑定点击事件
[btn addTarget:self action:@selector(selectedBtn:) forControlEvents:UIControlEventTouchUpInside];
// 默认选中第一个
if (self.tabbarBtns.count == 1) {
[self selectedBtn:btn];
18 // 按钮的点击事件
19 - (void)selectedBtn:(SVTabbarButton *)btn
// 通知代理
if ([self.delegate respondsToSelector:@selector(tabbar:didSelectBtnFrom:to:)]) {
[self.delegate tabbar:self didSelectBtnFrom:(int)self.currentBtn.tag to:(int)btn.tag];
// 设置tabbar的选中
self.currentBtn.selected = NO;
btn.selected = YES;
self.currentBtn =
30 // 布局按钮
31 - (void)layoutSubviews
self.subviews[0].center = CGPointMake(self.frame.size.width * 0.5, self.frame.size.height * 0.5);
for (int index = 0; index&self.tabbarBtns. index++) {
SVTabbarButton *btn = self.tabbarBtns[index];
CGFloat bW = self.frame.size.width/self.subviews.
CGFloat bH = self.frame.size.
CGFloat bX = index * bW;
CGFloat bY = 0;
if (index&1) {
btn.frame = CGRectMake(bX, bY, bW, bH);
  5-2.自定义按钮,重新布局按钮的位置,并对按钮进行赋值数据,有四个控制器,所以重构添加控制器的方法,根据不同的控制器为相应属性赋值。
1 // 重新布局btn内部的控件得到想要的效果
2 - (instancetype)initWithFrame:(CGRect)frame
if (self = [super initWithFrame:frame]) {
// 图片居中显示
self.imageView.contentMode = UIViewContentModeC
// 文本居中显示
self.titleLabel.textAlignment = NSTextAlignmentC
// 设置字体大小
[self.titleLabel setFont:[UIFont systemFontOfSize:13]];
// 设置字体颜色
[self setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self setTitleColor:[UIColor orangeColor] forState:UIControlStateSelected];
18 // 重写item的set方法,对btn进行赋值
19 - (void)setItem:(UITabBarItem *)item
[self setTitle:item.title forState:UIControlStateNormal];
[self setImage:item.image forState:UIControlStateNormal];
[self setImage:item.selectedImage forState:UIControlStateSelected];
27 // 内部图片的位置
28 - (CGRect)imageRectForContentRect:(CGRect)contentRect
CGFloat imageW = contentRect.size.
CGFloat imageH = contentRect.size.height * 0.6;
return CGRectMake(0, 0, imageW, imageH);
35 // 内部文字的位置
36 - (CGRect)titleRectForContentRect:(CGRect)contentRect
CGFloat titleY = contentRect.size.height * 0.6;
CGFloat titleW = contentRect.size.
CGFloat titleH = contentRect.size.height - titleY;
return CGRectMake(0, titleY, titleW, titleH);
43 // 去掉按钮的高亮状态
44 - (void)setHighlighted:(BOOL)highlighted {}
  5-3.完成点击按钮控制器的跳转,取消按钮高亮状态,默认选中第一的按钮,按钮绑定点击事件,为自定义的tabbar写代理,监听按钮点击跳转控制器
1 @protocol SVTabbarDelegate &NSObject&
2 @optional
3 // 当tabbar上的按钮点击的时候会调用
4 - (void)tabbar:(SVTabbar *)tabbar didSelectBtnFrom:(int)from to:(int)
1 #pragma mark tabbar的代理方法
2 - (void)tabbar:(SVTabbar *)tabbar didSelectBtnFrom:(int)from to:(int)to
self.selectedIndex =
  6.添加中间的加号按钮,位置固定所以直接一次设置就好
1 - (instancetype)initWithFrame:(CGRect)frame
if (self = [super initWithFrame:frame]) {
UIButton *plusBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[plusBtn setBackgroundImage:[UIImage imageNamed:@&tabbar_compose_button_os7&] forState:UIControlStateNormal];
[plusBtn setBackgroundImage:[UIImage imageNamed:@&tabbar_compose_button_highlighted_os7&] forState:UIControlStateHighlighted];
[plusBtn setImage:[UIImage imageNamed:@&tabbar_compose_icon_add_os7&] forState:UIControlStateNormal];
[plusBtn setImage:[UIImage imageNamed:@&tabbar_compose_icon_add_highlighted_os7&] forState:UIControlStateHighlighted];
plusBtn.frame = CGRectMake(0, 0, plusBtn.currentBackgroundImage.size.width, plusBtn.currentBackgroundImage.size.height);
[self addSubview:plusBtn];
  今天就先做这一点,基本大的框架就已经好了,明天修一下细节。
以上就是这篇文章的全部内容了,希望大家能够喜欢。
这些内容可能对你也有帮助
更多可查看IOS开发列表页。
猜您也会喜欢这些文章手机节节涨价,未来的我们该如何对待,有因必有果。
人们曾以为 iPad 将会是取代传统 PC 的利器,想不到如今“iPad 将死”的论调都已经不...
《Hidden Folks》是一款用心至极的作品,你从游戏收获多少乐趣,就能证明两位开发者投...
这次传得言之凿凿的“中国红”款如果成真,有希望给苹果带来一片红火销量。
也就是说,入门级就是64GB容量,怪不得有人说iPhone 8会很贵。
如果你还没升级iOS 10的话,你的原因又是什么呢?
在涉及智能语音助手性别一事上,仍然存在着一定的性别“歧视”。
东芝出售股份的最终结果会对苹果产生影响,毕竟东芝目前还是iPhone最大的闪存供应商。
《死在眼前(Dead On Sight)》是Bombhead推出的一款射击类游戏,玩家将会来到各个小...
此前已经有不少的战棋类的游戏登陆移动平台,但是似乎并没有获得太多玩家的关注。而在...
尽管我们每个人提起 EVA 总会有这样或那样的情绪,但当真正敲击键盘完成评测的时候,...
近日,游戏开发商KEMCO在苹果商店当中推出了其制作的一款RPG游戏新作《镇尼大法师(RP...
Channel 4推出了一款海盗题材的新作《海盗任务(Pirate Quest)》,在游戏中你将会踏...
《叁行》的 App 副标题是——文字从未在这里缺席。可能你会因为这句话而喜欢上这个 Ap...
《彩云小译》是彩云团队继大热的《彩云天气》之后推出的系列第二款应用,该系列最大的...
不得不说,蜗壳这个造型还是非常有型的。
那旋转跳跃的 AirPods 音符也是很有魔性的。
喜欢的体育项目不同,锻炼习惯不同,更合适你的耳机,也不同~
除了充当 Apple Watch 无线充电器,它还能充当移动电源。
日本 SANKO 公司近日推出一款自带风冷系统的 iPhone 游戏手柄外设,专门用于横屏模式...
如果你想购买一款配备W1芯片的耳机,不妨考虑下BeatsX。
如果苹果希望AirPods能够在耳机历史上留下浓墨重彩的一笔的话,可能就要开始思量如何...
注意不单是负责生产,而是屏幕设计+生产都由富士康来操办。
BlackCam - Black&White&
注册时间 最后登录
在线时间535 小时 UID
主题帖子人气
蓝钻苹果, 积分 11051, 距离下一级还需 2949 积分
限免BlackCam - Black&White Camera 作者是 pierre gougelethttps://appsto.re/cn/gOSq4.i
image3254.png (140.96 KB, 下载次数: 0)
10:43 上传
威锋旗下产品
Hi~我是威威!
沪公网安备 29号 | 沪ICP备号-1
新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!}

我要回帖

更多关于 一点公益是真是假 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信