《iOS6 application development》学习之路:No.1

来源:互联网 发布:淘宝零食店排名 编辑:程序博客网 时间:2024/05/22 13:09

虽然开始学习iOS的开发是在XCode5.1之后,而且默认的部署环境也都是iOS7的了,但是舍不得越狱的我的小4,况且也带不动iOS7,不过还好找到了可以把程序部署到我的iOS6系统上的方法http://blog.csdn.net/u011156012/article/details/30543471

入手《iOS6 Application Development》这本书已经1周了,感觉看起来很舒服,从简单到复杂,循序渐进,不断深入学习iOS开发的种种。今天进入到第11章:实现多场景和弹出框。总算进入到真正有内容的章节了,开始做读书笔记吧!

先把这本书前10章中感觉对我来说有用的部分做个记录吧:

1. 首先需要加入Apple开发人员计划。

这个很简单,按照网站的提示,输入自己的Apple账号和密码就行了,如果不付费(个人和公司两种),只能把程序部署在模拟器上,还好公司有付费的账户,找同事邀请我加入了公司的群组,然后再连上自己的设备部署的时候,按照系统提示一步步来就好了。轻松加随意。

2. 虽然买的书是讲iOS6的,但是其实内容都大同小异,而且SDK的改变也都是一些小细节方面的,并没有很大的改动,所以对着6学7的开发,一点问题也没有。还有个原因是目前iOS7的中文翻译似乎还没有出,而想海淘一本原版的书需要花费1个月,学习心切如我就在网上买了一本6的。

3. 关于Objective c

虽然对c和c++已经很熟悉了,但是刚开始用OC的时候还是有些别扭,可能后期用多了就习惯了吧。不是很理解[]什么时候用,感觉似乎是当调用对象的成员时用. 而调用对象的方法的时候需要用[]了。不知道对不对。再闲聊下Apple最近发布的Swift语言,想起来1年前看了一个视频,讲的是Apple公司的一位coding大牛,在讲述可视化开发,当时让我特别震撼,原来开发还可以这样进行,1年后swift就横空出世了,感觉语法和python有些相似,不过对于掌握了c和c++这种基础语言的童鞋来说,学习新的语言应该不是什么特别难的事。

4.关于iOS的技术层:

iOS从底层到最高层分别由: 核心OS层、核心服务层、多媒体层和 Cocoa Touch层组成。

Cocoa Touch是一系列的软件框架和运行环境用于创建iOS应用程序,包含数百个类,可用于管理从按钮到统一资源定位符(URL)到操作照片和进行脸部识别的一切。总之,Cocoa Touch就是最上层的,用户能直接与之交互的部分。与之对应的Cocoa,是用于开发Mac OS X的框架,加了个Touch可以理解主要是用于触摸设备。 

Cocoa Touch包括很多框架,其中最核心的又是UIKit。基本上一个简单程序用到的所有都能在UIKit中找到。除此以外,还有MapKit,Game Kit, Message UI/Address Book UI/Event Kit UI以及用于广告管理的iAd。

5. 第6章到第10章分别介绍了最常用的一些控件,例如label,button,textfield,image view等等。

5.1 关于Data Detector

在Textview的属性中如果选中了Detector,则可以对一些特殊字符做自动识别,例如电话号码,邮件,address等等,不要滥用,应为我也在使用中有发现,有时候就是想用到数字,却总是被识别成电话号码。

5.2 对象的上下关系

就是那个对象在前哪个在后。在书中p153页,提到可以在Editor>Arrange>Send to Back来把他放到后面,但是不知道为何我的界面中这些都是灰色的不可用的,还好SDK还提供了别的方法,在大纲区域,越靠下的控件同时是越靠前的,也就是说对象是从上(后)到下(前)的顺序叠放的。

这里提到了把一个充满整个屏幕的button放到最后面,这样用户点击其他区域的时候,就可以做返回操作了。而我们除了写上正确的接口文件,还需要把这个“很大”的按钮放到大纲区域的最上面。

隐藏键盘的方法,就是当点击“很大”的按钮时执行 [self.thekeyboard resignFirstResponder],退出第一响应就好了!

6. 得到float 0.x怎么办呢?  这个函数也许有用(float)(rand()%11+1)/10;

7. UIWebView的loadRequest不能直接处理NSURL对象,而接受一个NSURLRequest对象。

为了解决这个问题,我们使用NSURLRequest的类方法requestWithURL:

NSURL *imageURL;imageURL = [[NSString alloc] initWithFormat:@"http://www.ssfsdfs.com"];[self.flowerview loadRequest:[NSURLRequest requestWithURL: imageURL]];

8. 确定被按下的按钮时,可以通过索引或者标题内容:

-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{//    NSString *buttonTitle = [actionSheet buttonTitleAtIndex:buttonIndex];//    if([buttonTitle isEqualToString:@"Destory"]){//        self.userOutput.text = @"Clicked 'destory'";//    }else if([buttonTitle isEqualToString:@"Negotiate"]){//        self.userOutput.text = @"Clicked 'Negotiate!'";//    }else if([buttonTitle isEqualToString:@"Compromise"]){//        self.userOutput.text = @"Clicked 'Compromise'";//    }else if([buttonTitle isEqualToString:@"HAHA"]){//        self.userOutput.text = @"Clicked 'HAHA'";//    }else if([buttonTitle isEqualToString:@"OMG"]){//        self.userOutput.text = @"Clicked 'OMG'";//    }else{//        self.userOutput.text = @"Clicked 'Cancel'";//    }    if(buttonIndex == 0){        self.userOutput.text = @"Clicked 'destory'";    }else if(buttonIndex == 1){        self.userOutput.text = @"Clicked 'Negotiate!'";    }else if(buttonIndex == 2){        self.userOutput.text = @"Clicked 'Compromise!'";    }else if(buttonIndex == 3){        self.userOutput.text = @"Clicked 'HAHA'";    }else if(buttonIndex == 4){        self.userOutput.text = @"Clicked 'OMG'";    }else{        self.userOutput.text = @"Clicked 'cancel'";    }}

注释掉的是按照标题内容来确定,也可以通过索引来实现,索引从0开始,这样当动态添加按钮时,也可以通过索引来得到了。

10.播放声音?

没问题,只不过需要添加框架AudioToolBox。

选择项目的顶级编组,在General区域最下方找到Linked Frameworks and Libraries,添加, 选择 AudioToolBox.framework。

下面3组函数分别执行 播放声音、播放声音+震动和只震动了。

- (IBAction)doSound:(id)sender {    SystemSoundID soundID;    NSString *soundFile = [[NSBundle mainBundle]                           pathForResource:@"soundeffect" ofType:@"wav"];    AudioServicesCreateSystemSoundID((__bridge CFURLRef)                                     [NSURL fileURLWithPath:soundFile], &soundID);    AudioServicesPlaySystemSound(soundID);}- (IBAction)doAlertSound:(id)sender {    SystemSoundID soundID;    NSString *soundFile = [[NSBundle mainBundle]                           pathForResource:@"alertsound" ofType:@"wav"];    AudioServicesCreateSystemSoundID((__bridge CFURLRef)                                     [NSURL fileURLWithPath:soundFile], &soundID);    AudioServicesPlayAlertSound(soundID);}- (IBAction)doVibration:(id)sender {    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);}


0 0
原创粉丝点击