1、必须熟练掌握Objective-C语言,熟悉OC中各种常用语法,苹果自带框架以及第三方框架的知识,基础UI控件的运用;
成都创新互联公司:成立与2013年为各行业开拓出企业自己的“网站建设”服务,为上千家公司企业提供了专业的成都网站设计、成都做网站、网页设计和网站推广服务, 按需定制制作由设计师亲自精心设计,设计的效果完全按照客户的要求,并适当的提出合理的建议,拥有的视觉效果,策划师分析客户的同行竞争对手,根据客户的实际情况给出合理的网站构架,制作客户同行业具有领先地位的。
2、了解iOS操作系统,能够编写出稳定性强,扩展性高的代码,熟知数据库的操作方法和Xcode的使用;
3、掌握开发工具的使用,如VB、powerbuilder这类的可视化开发工具、C/C++和JAVA等开发工具。
总结:
1、必须熟练掌握Objective-C语言,熟悉OC中各种常用语法;
2、了解iOS操作系统,能够编写出稳定性强,扩展性高的代码,熟知数据库的操作方法和Xcode的使用;
3、掌握开发工具的使用,如VB、powerbuilder这类的可视化开发工具、C/C++和JAVA等开发工具。
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:0731-84117792E-MAIL:11247931@qq.com
为了更好理解使用用tabbar和切换视图,我们创建一个Empty Application。
1、 打开Xcode ,新建项目
2、 创建View Controller
在项目上按花键+N创建新文件,创建 Objective-C class 文件,按Next按钮,subClass 选UIViewController 。勾选上xib选项
以同样方式创建另外三个ViewController ,RedViewController ,GreyViewController,YellowViewController。四个View准备好了。那么Tabbar呢?
3、 创建TabBarController.xib文件,选择创建Empty文件
这时候你发现创建的xib文件是空白的,不用慌,去右下角控件栏中把TabBar Controller拖过来就Ok了。
4、 关联TabBarController.xib ,tabbarAppDelegate这两个文件
在上图中选择File’s Owner,打开Identity Inspector,在Class一栏选择tabbarAppDelegate
这样,我们就可以创建TabBarController.xib 文件指向tabbarAppDelegate 文件的Outlet映射了。
5、 在Xcode中的工具栏的View菜单找到 打开Assistant Editor,使tabbarAppDelegate.h和TabBarController.xib 同时打开。
在xib文件上按住control键,往tabbarAppDelegate.h,创建Outlet.
弹出窗口输入 rootController,点connect。
6、 添加代码
打开tabbarAppDelegate.m,在didFinishLaunchingWithOptions方法中添加代码:
1.- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
2. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
3. // Override point for customization after application launch.
4. [[NSBundle mainBundle] loadNibNamed:@"TabBarController" owner:self options:nil];
5. [self.window addSubview:self.rootController.view];
6. self.window.backgroundColor = [UIColor whiteColor];
7. [self.window makeKeyAndVisible];
8. return YES;
7、 往TabBarController.xib上添加Tab Bar Item,
把控件栏上的Tab Bar Item控件往TabBarController.xib上拖拽即可,一个放4个。
8 、关联Tab Bar Item和***ViewController。
选择其中一个Tab Bar Item,在右上角打开Identity Inspector,在Class中选择BlueViewController:
然后,打开Attribute,在NIB Name选择BlueViewController:
其他3个tab item重复类似的操作,选中对应的ViewController,这样在切换Tab标签时,就可以切换到对应的页面。
9、 设置tab item的属性
选中其中一个tab item ,会在右上角的属性栏里看到如下信息
Badge是红色圈圈里面有数字 ,表示有多少条信息的属性
Identifier 是tab item的样式,选custom是自定义,下面的是系统的样式。我选了其中四种。
bar ITem 的title image在custom的样式下能设置。
10 、剩下的3个Tab Item也做类似的设置即可。
现在基本完工,运行看看结果如何。好吧,其实和第一第二个图是一样的`,这里就不放了。
11 、在viewDidLoad方法加Log观察切换View
可以加写日志看看对应的View是什么时候运行的。第一个运行的View是BlueViewController,点击其他的tab项时,加载其他的view,加载一次之后下次点击不再调用viewDidLoad。
1.- (void)viewDidLoad
2. [super viewDidLoad];
3. NSLog(@"BlueViewController");
4. // Do any additional setup after loading the view from its nib.
一、简单说明
一般情况下,点击某个控件后,会做出相应反应的都是按钮
按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置
二、按钮的三种状态
normal(普通状态)
默认情况(Default)
对应的枚举常量:UIControlStateNormal
highlighted(高亮状态)
按钮被按下去的时候(手指还未松开)
对应的枚举常量:UIControlStateHighlighted
disabled(失效状态,不可用状态)
如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击
对应的枚举常量:UIControlStateDisabled
三、注意点
(1)从Xcode5开始,图片资源都放到Images.xcassets中进行管理,可以使用拖拽的方式添加项目中用到的图片到Images.xcassets中
(2)若干多个控件共用一段代码,通常使用tag。
四、代码示例
(1)
复制代码 代码如下:
#import "LFViewController.h"
@interface LFViewController ()
@property (weak, nonatomic) IBOutlet UIButton *headImageView;
@end
@implementation LFViewController
// 在OC中,绝大多数的控件的监听方法的第一个参数就是控件本身
//- (IBAction)left:(UIButton *)button {
//
// NSLog(@"----");
//}
- (IBAction)move
{
// 通过frame修改head的位置
// 在OC中,不允许直接修改“对象”的“结构体属性”的“成员”
// 允许修改“对象”的'“结构体属性”
// 1. 取出结构体属性
CGRect rect = self.headImageView.frame;
// 2. 修改结构体成员
rect.origin.y -= 20;
// 3. 设置对象的结构体属性
self.headImageView.frame = rect;
}
(2)
复制代码 代码如下:
#import "LFViewController.h"
使用git
1. 创建项目时,勾选git
2. 开发告一段落后,选择"Source Control""Commit",并编写注释
// 枚举类型实质上就是一个整数,作用就是用来替代魔法数字
// 枚举类型中,指定了第一个整数之后,后面的数字会递增
typedef enum
kMovingDirTop = 10,
kMovingDirBottom,
kMovingDirLeft,
kMovingDirRight,
} kMovingDir;
#define kMovingDelta 50
@interface LFViewController ()
@property (weak, nonatomic) IBOutlet UIButton *headImageView;
@end
@implementation LFViewController
- (IBAction)move:(UIButton *)button
// CGRect rect = self.headImageView.frame;
CGPoint p = self.headImageView.center;
// magic number魔法数字,其他程序员看到代码的时候,不知道是什么意思
switch (button.tag) {
case kMovingDirTop:
p.y -= kMovingDelta;
break;
case kMovingDirBottom:
p.y += kMovingDelta;
break;
case kMovingDirLeft:
p.x -= kMovingDelta;
break;
case kMovingDirRight:
p.x += kMovingDelta;
break;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
self.headImageView.center = p;
[UIView commitAnimations];
- (IBAction)zoom:(UIButton *)button
CGRect rect = self.headImageView.bounds;
// 在C语言中,关于bool的判断:非零即真
if (button.tag) {
rect.size.width += 50;
rect.size.height += 50;
rect.size.width -= 50;
rect.size.height -= 50;
// 首尾动画
// beginAnimations表示此后的代码要“参与到”动画中
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
self.headImageView.bounds = rect;
// self.headImageView.alpha = 0;
// commitAnimations,将beginAnimation之后的所有动画提交并生成动画
[UIView commitAnimations];
@end
五、补充笔记
1. IBAction的参数
- (IBAction)left:(UIButton *)button
(1) 在OC中,绝大多数的控件监听方法的第一个参数就是控件本身
(2) 默认连线时的参数类型是id
(3) 如果要在监听方法中,方便控件的使用,可以在连线时或者连线后,修改监听方法的参数类型
2. 修改对象的结构体成员
在OC中,不允许直接修改“对象”的“结构体属性”的“成员”,但是允许修改“对象”的“结构体属性”
修改结构体属性的成员方法如下:
(1)使用临时变量记录对象的结构体属性
(2) 修改临时变量的属性
(3)将临时变量重新设置给对象的结构体属性
3. 在程序开发中需要避免出现魔法数字(Magic Number)
使用枚举类型,可以避免在程序中出现魔法数字
(1)枚举类型实质上就是一个整数,其作用就是用来替代魔法数字
(2)枚举类型中,指定了第一个整数之后,后面的数字会递增
4. frame bounds center
1 frame可以修改对象的位置和尺寸
2 bounds可以修改对象的尺寸
3 center可以修改对象的位置
5. 首尾式动画
复制代码 代码如下:
// beginAnimations表示此后的代码要“参与到”动画中
[UIView beginAnimations:nil context:nil];
// setAnimationDuration用来指定动画持续时间
[UIView setAnimationDuration:2.0];
self.headImageView.bounds = rect;
......
// commitAnimations,将beginAnimation之后的所有动画提交并生成动画
[UIView commitAnimations];
下面来罗列一下UIButton的基本属性罗列
第一、UIButton的定义
复制代码 代码如下:
UIButton *button=[[UIButton buttonWithType:(UIButtonType);
能够定义的button类型有以下6种,
复制代码 代码如下:
typedef enum {
UIButtonTypeCustom = 0, 自定义风格
UIButtonTypeRoundedRect, 圆角矩形
UIButtonTypeDetailDisclosure, 蓝色小箭头按钮,主要做详细说明用
UIButtonTypeInfoLight, 亮色感叹号
UIButtonTypeInfoDark, 暗色感叹号
UIButtonTypeContactAdd, 十字加号按钮
}UIButtonType;
第二、设置frame
复制代码 代码如下:
button1.frame = CGRectMake(20, 20, 280, 40);
[button setFrame:CGRectMake(20,20,50,50)];
第三、button背景色
复制代码 代码如下:
button1.backgroundColor = [UIColor clearColor];
[button setBackgroundColor:[UIColor blueColor]];
第四、state状态
forState: 这个参数的作用是定义按钮的文字或图片在何种状态下才会显现
复制代码 代码如下:
enum {
UIControlStateNormal = 0, 常规状态显现
UIControlStateHighlighted = 1 0, 高亮状态显现
UIControlStateDisabled = 1 1, 禁用的状态才会显现
UIControlStateSelected = 1 2, 选中状态
UIControlStateApplication = 0x00FF0000, 当应用程序标志时
UIControlStateReserved = 0xFF000000 为内部框架预留,可以不管他
@property(nonatomic,getter=isEnabled)BOOL enabled; // default is YES. if NO, ignores touch events and subclasses may draw differently
@property(nonatomic,getter=isSelected)BOOL selected; // default is NO may be used by some subclasses or by application
@property(nonatomic,getter=isHighlighted)BOOL highlighted;
第五 、设置button填充图片和背景图片
复制代码 代码如下:
[buttonsetImage:[UIImageimageNamed:@"checkmarkControllerIcon"]forState:UIControlStateNormal];
[buttonsetBackgroundImage:[UIImageimageNamed:@"checkmarkControllerIcon"]forState:UIControlStateNormal];
第六、设置button标题和标题颜色
复制代码 代码如下:
[button1 setTitle:@"点击" forState:UIControlStateNormal];
[buttonsetTitleColor:[UIColorredColor]forState:UIControlStateNormal];
第七、设置按钮按下会发光
复制代码 代码如下:
button.showsTouchWhenHighlighted=NO;
第八、添加或删除事件处理
复制代码 代码如下:
[button1 addTarget:self action:@selector(butClick:) forControlEvents:UIControlEventTouchUpInside];
[btn removeTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];
第九、 设置按钮内部图片间距和标题间距
复制代码 代码如下:
UIEdgeInsets insets; // 设置按钮内部图片间距
insets.top = insets.bottom = insets.right = insets.left = 10;
bt.contentEdgeInsets = insets;
bt.titleEdgeInsets = insets; // 标题间距
第一步:编程入门课
时间预计:4个星期
推荐看公开课,Udacity也行,网易公开课也行,自己找一个面对对象语言(一般是JAVA, C++, Python)的课。我是在网易公开课看的斯坦福的CS106A,学的JAVA。
如果你纯粹学iOS开发,不推荐看哈佛CS50,CS50是给CS系的学生介绍整个计算机世界的框架,讲的内容比较多,进度比较快,对iOS开发其实有点累赘了。(臣妾有点跟不上啊!!)
计划安排是一天一课,看课程要求的书(至少看完一本)及大部分作业。这一阶段重点不是语法,而是以下3个目标。
目标:
1. 让自己对编程这件事感到适应。
写hello world。
怎么写function, 怎么调用function。
全局变量,局部变量这类基本知识点。
都是基本的东西。看看书,写多两个程序就欧啦。
2. 掌握编程语言的基本要素。
编程语言4个要素:
a. 基本的数据类型:整数,实数,character, string, boolean
b. 基本的运算符号:+-×/++--那啥的
c. 怎样输入输出
d. 怎样控制程序:sequence,selection,loop
3. 了解编程范式
面对过程编程。
面向对象编程。
第二步:上手iOS!
时间预计:2星期
强烈推荐CS193P,老头子讲的超级好!我的很多东西(对象思维啥的)是在这里跟着做练习的时候才真正明白的(好啦,也可能是上一堂课练习做得少的原因)。如果等到9月应该itunes U上会开始教iOS 7了。网易公开课的是2010年iOS 5版的,前10堂课,也行。(iTunes U上有完整的课)
CS193P说有prerequisite,一开始被吓到,事实证明还是可以学下去的。头两节课一头雾水,没关系,把itunes U上的课件下载下来,把所有代码打出来,然后一个个元素对应之前学的语言匹配,再不懂先放着,继续学后边的,过几天打多点代码就懂了。
感觉学5、6堂课,一个星期左右就可以开始进入下一阶段自己做东西了。之后用啥学啥,每堂课都有主题的。速度慢点的同学们,这阶段跟我一样准备两个星期吧!
第三步:开发app!
时间预计:2星期(本人...1个半月,实在不好意思说出口)
这个时间就可长可短啦,还包括美工,交互啥的。坚持要用啥学啥的原则,其实就是知道iOS SDK都有什么组件,每个组件有什么function而已。stackoverflow, Github, apple sample code多上,搜索引擎多用。如果有个师傅,这个阶段真的是进步神速。
好的!不出意外,你的第一个app就这么新鲜出炉了!从今天开始,成为一个冷艳逼格高尚的iOS开发者吧!
为了实现自定义cell按钮选择问题,花了几个小时,在此记录分享一下:
平时iOS开发中,经常遇到自定义cell问题,tableView使用cell时候由于cell是复用的,所以cell中的按钮等控件也会被复用,不能直接在cell中self.方式引用控件来判断对应的控件唯一性,由于tableView刷新或者重用会导致使用混乱问题,cell中使用的控件不是唯一的!!!只有在控制器中进行引用和判断才是唯一的!!!
效果图:
如图自定义cell会重用按钮:
流程如下:
1.自定义cell布局按钮设置选择状态图片:
2.设置cell大小按钮,并设置按钮的点击事件传递tag,通过代理传值给控制器
3.第三个数据源方法将indexPath.row的值赋值给cell的按钮的tag
4.模型添加属性记录按钮选择状态
5.自定义代理方法通过tag找到对应模型,模型选择属性取反
6.根据是否为选择的cell设置模型的选择属性
7.获取对应数据
我已经很尽力把每步都写的够详细,不好之处,还望海涵.☺️
用于显示文本,文本是对一些东西的说明。标签继承于UIView。
//1.创建(在系统中存在alloc)
UILabel*label = [[UILabel alloc] init];
//2.美化(设计位置大小背景颜色显示文本等等)
/*
frame设置位置和大小。位置(x,y)大小(weight,hight)。
frame{x,y,weight,hight} 结构体struct
frame包括origin/size:origin{x,y}size{weight,hight}
frame是CGRect类型(结构体,包括CGPoint类型的origin和CGSize类型的size),origin包括CGFloat类型的x和y ;size包括CGFloat类型的size和height。
CGRectMake(#CGFloat x#, #CGFloat y#,#CGFloat width#, #CGFloat height#);设置大小和位置。
*/
label.frame=CGRectMake(0, 0, 100, 100);
//设置背景颜色
label.backgroundColor=[UIColor yellowColor];
//text属性设置标签的文本
label.text=@"标签控件";
//textAlignment设置文本对齐方式枚举类型
//NSTextAlignmentCenter居中对齐
//NSTextAlignmentRight居右
//NSTextAlignmentLeft居左
label.textAlignment=NSTextAlignmentCenter;
//textColor设置文本颜色
label.textColor= [UIColor blackColor];
//font设置字体大小默认字体大小是17
label.font=[UIFont systemFontOfSize:14];
//numberOfLines设置多行显示当设置为0时自动分行
label.numberOfLines= 0;
//shadowOffset设置阴影
//第一个数值为正则向右偏移否则向左偏移
//第二个数值为正则向下偏移否则向上偏移
label.shadowOffset=CGSizeMake(-2, -2);
//shadowColor设置阴影颜色
label.shadowColor= [UIColor redColor];
//3.添加(把控件贴到需要显示的地方)
//addSubview添加子视图这里让标签添加到窗口上
//这里self.view叫做label的父视图
[self.view addSubview:label];
用于控制行为的发生或者属性的改变
//1.创建
//创建对象分配内存并初始化
UIButton*button=[[UIButton alloc] init];
//2.美化
button.frame=CGRectMake(100, 100, 100, 40);
//设置背景颜色
button.backgroundColor= [UIColor blueColor];
//设置按钮的标题不能通过属性设置
//第一个参数setTitle是按钮的标题字符串
//第二个参数forState是设定这个标题所处的状态枚举类型
//UIControlStateNormal通常状态
//UIControlStateHighLighted高亮状态
//UIControlStateDisabled不可使用的状态
//UIControlStateSelectwd选择下的状态
[buttonsetTitle:@"开始" forState:UIControlStateNormal];
[buttonsetTitle:@"关闭" forState:UIControlStateHighlighted];
//UIImage图片类工具类继承于NSObject
UIImage*image = [UIImage imageNamed:@"1.png"];
//设置按钮图片(根据自身大小进行添加)
//第一个参数setImage设置的图片UIImage类型
//第二个参数forState是设置图片这个图片的状态枚举类型
//[button setImage:image forState:UIControlStateNormal];
//设置一般状态下的图片之后点击图片变暗设置高亮状态下的图片就可以消除这个bug
//[button setImage:image forState:UIControlStateHighlighted];
//设置按钮的背景图片(适应大小,自动拉伸)
[button setBackgroundImage:imageforState:UIControlStateNormal];
[button setBackgroundImage:imageforState:UIControlStateHighlighted];
//按钮绑定方法
//第一个参数addTarget添加目标,点击按钮之后谁去执行按钮的方法self自己执行
//第二个参数action行为方法,按钮绑定的方法
//第三个参数forControlEvents控制事件,按钮在什么条件下去触发绑定的方法枚举//UIControlEventTouchUpInside单击
//这里给按钮绑定方法括号中相当于声明了方法。但是这个方法需要在这个类中实现,否则运行点击按钮会崩溃
[button addTarget:selfaction:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
//边框宽度.通过设置layer打点可以对控件进行切边,但是两个属性要同时使用才有效果
Button.layer.borderWidth= 1.0;
//边框颜色
Button.layer.borderColor= [UIColor colorWithRed:197 /255.0green:197 / 255.0blue:197 / 255.0alpha:1].CGColor;
Button.layer.borderColor= (__bridgeCGColorRef_Nullable)([UIColor colorWithRed:197 /255.0green:197 / 255.0blue:197 / 255.0alpha:1]);
//3.添加
//添加到窗口addSubview上添加子视图
[self.view addSubview:button];
用于输入文本内容
//1.创建内存分配内存并且初始化
UITextField *textfield =[[UITextField alloc] init];
//2.美化
//设置位置和大小
textfield.frame=CGRectMake(100, 100, 100, 40);
//设置背景颜色
textfield.backgroundColor= [UIColor redColor];
//borderStyle设置边框类型枚举类型
//UITextBorderStyleRoundedRect圆角矩形
//UITextBorderStyleline线性
//UITextBorderStyleBezel刃型
textfield.borderStyle=UITextBorderStyleRoundedRect;
//placeholder设置提示语
textfield.placeholder=@"请输入密码..";
//设置安全输入。布尔类型设置YES;输入内容会变为小黑点
// textfield.secureTextEntry = YES;
//设置输入框的文本(获取输入框的文本也是这个属性)
textfield.text=@"123";
//设置清除按钮的样式枚举样式
//UITextFieldViewModeWhileEditing当编辑时候存在(光标一定在输入框中的)//UITextFieldViewModeUnlessEditing除了编辑的时候(只要输入框中有内容)//UITextFieldViewModeAlways总是存在
textfield.clearButtonMode=UITextFieldViewModeWhileEditing;
//是否纠错,输入时会提示正确的内容
textField.autocorrectionType=UITextAutocorrectionTypeNo;
//设置return键的样式枚举类型
textfield.returnKeyType=UIReturnKeySend;
//设置键盘的样式
//UIKeyboardTypeNumberPad纯数字键盘
textfield.keyboardType=UIKeyboardTypeNumberPad;
//enabled设置输入框不可使用
textfield.enabled=YES;
//设置每次开始编辑时清除原输入框的内容
textfield.clearsOnBeginEditing=YES;
//键盘下去3种方法(失去第一响应者。输入框绑定方法。touchesBegan。)
//3.添加到窗口上
[self.view addSubview:textfield];
图片视图
//UIImageView专门用来显示图片的图片视图,继承于uiview.
//1.创建
UIImageView *imageView = [[UIImageView alloc] initWithFrame:[[UIScreenmain Screen] bounds]];
//2.美化
//设置位置和大小
//imageView.frame = CGRectMake(40, 80, 200, 300);
//设置图片
//创建一张图片用于视图图片的显示
UIImage *image = [UIImage imageNamed:@"6.png"];
//image图片视图的属性用于设置图片
imageView.image= image;
//userInteractionEnabled 设置用户交互性
imageView.userInteractionEnabled=YES;
//3.添加
[self.view addSubview:imageView];