iOS学习笔记之故事版和音乐播放等

1. 懒加载的时候   不要创建一个对象然后对指针赋值  

因为创建的对象如果没有被控制器强引用的情况下 就会被释放  

所以自己的指针指的位置还是空  然后指针也被回收掉  相当于没有什么用


2. 当带有参数id请求的时候  一定要记得当数组中的数据不为0 的时候,获取第一个,或者最后一个的id  。


3. 用SB的时候 拖动的每个控件都可以规定是什么类  相对应的类,可以对相对应的类进行拖线管理,并在类中设置特有的属性 


SB可以创建对个  


SB上面的东西  并不一定是相对应的图片  只是包含控件上所有子控件的类型


也就是说SB就是故事版  起到了结构换的作用 


无论什么时候  SB和XIB都只能做没有变化的界面  当界面的内容不确定的时候不能用


对于SB来说  当遇到不能满足我们需求的时候  会比较麻烦 


4. SB或者XIB中拖的控件  当加载的时候调用的是awakeFromNib

而不会调用initwithframe  而且这个方法调用在drawract之前


5. autoresizeMask 可以设置view的适配 UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth这事适配宽和高


6. 请求方法必须一个个的写出来  因为每个请求的请求参数和网址不一样,后续做的操作也是不一样的。


7. 表格的的分组创建用代码的话是在init方法中创建的,创建分组的话,组合组之间会分开,不创建分组的话不会分开的。无论是什么样的style都是可以创建组头的。分组的时候各分组之间有空隙,但是向上拉的时候 不会停留,不分组的话虽然组合组之间没有空隙,但是当每一分组到达屏幕的最上方时,组头会停留在最上方。


. 播放音乐分为本地音乐和网络音乐

对于本地音乐分为音乐(长音乐)音效(短音乐,几秒)


1.音效播放

播放音效的时候要用到AVFoundation.framework,但是看视频的时候没有成功。  许是AudioToolBox.framework正在验证


首先要获得播放文件的路径url[[NSBundle mainBundle] URLForResource:(example.mp3)withExtension:nil]


然后获得音效文件对应的ID ,加载音效文件

staticSystemSoundID soundID = 0

audioServersCreatSystemSoundID((__bridgeCFURLRef)(url),&soundID) //这个传递的是地址  方法肯定把id改变了,所以不需要参数来接受


最后播放音效

AudioServicesPlaySystemSound(soundID);普通播放

AudioServicesPlayAlertSound这个方法是带震动的播放


释放文件

AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)


2. 音乐播放


音乐播放的时候需要用到的类是AVAudioPlayer(音乐播放器)


播放的时候首先要获得文件的路径

然后加载文件在player初始化方法中

在init的方法中有

- (id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError;

- (id)initWithData:(NSData *)data error:(NSError **)outError


这个类中有很多方法,准备播放prepareToPlay,播放play,暂停pause,停止stop都有

属性有音乐的时常,是否正在播放,当前播放的位置,

播放次数numberOfLoop -1 代表无限循环 其他的是在基础上加1 

还有音量volume

是否更改速率enableRate  速率rate 默认是不可以更改的  想更改的话可以单独设置 


需要注意的是每一个播放器只能对应一个文件


二。SB中屏幕跳转分为直接跳转和条件跳转


直接跳转是在SB中对控件直接拉跳转 

条件跳右键控制器在segue选项中拖线到对应的控制器,同时选择跳转的方式。

modal的跳转没有导航栏,所以需要自己设置推出控制器的点击按钮。当然待在导航栏设置的东西也都是没有用的。


屏幕的条件跳转通过segue来区别的,不同的segue对应不同的跳转路线。每一个segue必须对应的ID。通过不同的ID来区分跳转的方向。


在用SB中,我们要注意的是,当需要条件跳转的时候要调用,

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender方法,其中identifierSBsegueID,而sender是传递的参数。


调用这个方法的时候,会通过

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法去传递参数,

segue有sourceViewControllerdestinationViewController两个属性,分别是segue两边的控制器,通过这两个属性可以判断跳转的是否正确。。sender就是上面传递的参数。在这个方法里可以对参数进行处理和赋值。

这里需要注意的是,不可以在set方法里经行属性赋值,因为这个时候,目的控制器的view还没有被创建出来,所以在set方法里对属性进行修改是没有效果的。当然也可以取消view的懒加载,当然这不建议。


三。导航栏按钮的拖线

当导航栏按钮是自己定义的button而不是uibarbuttonitem的时候,拖线的时候要注意,要对button经行拖线,而不要对拖成uibarbuttonitem。不然是没有效果的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值