ios开发

iOS开发拓展篇—音频处理(音乐播放器6)

烂漫一生 提交于 2020-01-20 03:02:03
iOS开发拓展篇—音频处理(音乐播放器6) 一、图片处理 说明: Aspect表示按照原来的宽高比进行缩放。 Aspectfit表示按照原来的宽高比缩放,要求看到全部图片,后果是不能完全覆盖窗口,会留有空白。 Aspectfill表示按照原来的宽高比缩放,但只能看到部分图片。引发的问题:可能会有一部分超出屏幕。 所以,如果选择了Aspectfill模式,那么需要剪切超出的图片,在storyboard中也可以进行设置。 下面的两种设置是等效的。 (1)在storyboard中进行设置 (2)使用代码裁剪 二、播放处理 1.当前歌曲播放结束之后,继续播放后面的歌曲   解决方案:成为播放器的代理。监听播放器的播放。    2.播放中断处理 1 #pragma mark-音乐播放器的代理 2 //播放器播放完毕后就会调用该方法 3 -(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag 4 { 5 [self next]; 6 } 7 //当播放器遇到中断的时候(如来电),调用该方法 8 -(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player 9 { 10 if (self.player.isPlaying) {

iOS开发拓展篇—音频处理(音乐播放器2)

半世苍凉 提交于 2020-01-20 03:01:33
iOS开发拓展篇—音频处理(音乐播放器2) 说明:该文主要介绍音乐播放界面的搭建。 一、跳转 1.跳转到音乐播放界面的方法选择   (1)使用模态跳转(又分为手动的和自动的)   (2)使用xib并设置跳转 2.两种方法的分析   可以使用模态的方法,添加一个控制器,让这个控制器和音乐播放控制器类进行关联,脱线,设置标识符且在cell的点击事件中执行segue即可。   步骤说明:   (1)在storyboard中新拖入一个控制器,然后设置和playing控制器类相关联。        (2)设置手动跳转          (3)设置segue的标识符        (3)跳转代码处理         不推荐使用模态的原因如下:     当选中一首音乐跳转到播放界面进行播放后,如果要跳回到音乐列表界面,那么最常见的做法是在音乐播放控制器上添加一个按钮。     当点击的时候,销毁这个控制器(dismissed)。但是,控制器销毁了那么正在播放的音乐也就随之不在了。     且由于播放界面控制器的布局是固定的,因此这里选择的方法是使用xib进行创建。 3.选择的方法   新建一个xib,对应于音乐播放控制器。   xib的结构如下图所示:        细节 :控制器只需要创建一次,因此建议使用懒加载,当然也可是把播放器设置为单例    1 // 2 //

iOS开发网络篇—大文件的多线程断点下载

风流意气都作罢 提交于 2020-01-19 09:17:01
iOS开发网络篇—多线程断点下载 说明:本文介绍多线程断点下载。项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件。因为实现过程较为复杂,所以下面贴出完整的代码。 实现思路:下载开始,创建一个和要下载的文件大小相同的文件(如果要下载的文件为100M,那么就在沙盒中创建一个100M的文件,然后计算每一段的下载量,开启多条线程下载各段的数据,分别写入对应的文件部分)。 项目中用到的主要类如下: 完成的实现代码如下: 主控制器中的代码: 1 #import "YYViewController.h" 2 #import "YYFileMultiDownloader.h" 3 4 @interface YYViewController () 5 @property (nonatomic, strong) YYFileMultiDownloader *fileMultiDownloader; 6 @end 7 8 @implementation YYViewController 9 - (YYFileMultiDownloader *)fileMultiDownloader 10 { 11 if (!_fileMultiDownloader) { 12 _fileMultiDownloader = [[YYFileMultiDownloader alloc] init]; 13

ios开发出现We'are sorry...错误页面

╄→尐↘猪︶ㄣ 提交于 2020-01-18 23:38:23
使用mui在mac上进行ios开发,在进行页面跳转时出现了一个ios的页面,如下所示: 奇怪的地方是,该页面在安卓上可以正常访问,但是在ios上访问,有时候就正常可以访问,有时就会出现如上所示画面,经过排查最后发现此bug是由跳转页面中的参数导致的,在请求的 url中如果带有空格或者是特殊符号 在ios上无法正常解析,所以会提示界面错误。 解决办法: 需要对url进行encode编码,如url = encodeURI(url); (注意:是encodeURi,而不是encodeURL)。 来源: CSDN 作者: sliver1836 链接: https://blog.csdn.net/sliver1836/article/details/104029624

iOS开发——高级篇——图片轮播及其无限循环效果

前提是你 提交于 2020-01-17 01:26:30
平时APP中的广告位、或者滚动的新闻图片等用到的就是图片轮播这种效果,实现方式主要有两种,一种是ScrollView+ImageView,另一种则是通过CollectionView,今天总结的是ScrollView这种方式。 1.图片轮播效果实现 主要实现思路是:根据图片总数及宽高设置好ScrollView的大小,每切换一张图片相当于在ScrollView上进行一个图片宽度的移动行为,并加入定时器,实现自动轮播。 如图所示,设置好ScrollView及PageControl,ScrollView的contentSize根据图片数量确定,注意启用pagingEnabled这个属性,确保整页移动,同样pageControl也是根据图片数量来确定,每一页代表一张图片。 图片命名采用数字序号方式,方便使用,需要注意的是,pageControl是由0开始的,也就是0对应image1,1对应image2...依次类推 加载图片并将准备好的图片在ScrollView里设置好位置,即将这些图片一张紧挨着一张排列在ScrollView中。 通过ScrollView的代理方法,在ScrollView滚动结束的时候根据 contentOffset更新页码。 定时器设置,这里设置为每隔2秒滚动更新一次,实际上就是每隔2秒更新一次页码,根据页码的变化,让ScrollView跟着移动,每次移动一张图片的距离

iOS开发笔记,简单实现视频音频的边下边播

烈酒焚心 提交于 2020-01-16 14:04:06
总是在网上看别人的博文,受益匪浅,从没自己写过,今天分享一点小经验,第一次写技术博客,希望对同行的ios猿们有所帮助。 先介绍一下自己的情况:一年ios开发,http协议不太懂,大约知道断点下载http请求头里的几个字段什么作用。(所以比我基础好的童鞋可以尽管放心的看我这篇博文) 直接切入主题,要实现的功能是: 1、ios视频音频边缓存边播放,缓存时可以在已下载的部分拖拽进度条。 2、缓存到一半退出,再次播放同一地址的视频时,视频继续下载,并且缓存进度已经走到上一次下载的位置。 3、无论是下载到一半退出还是下载完退出,已缓存的数据都存到自己指定的一个路径。如果已下载完,下次播放时可以不再走网络,直接播放本地文件。 4、一个有总时间,缓冲进度,播放进度的sliderbar。 (具体效果看唱吧4.1版本以后的视频效果吧) 用到的几个类: 1、ASIHttpRequest 2、MPMoviePlayerController 3、HTTPServer(https://github.com/robbiehanson/CocoaHTTPServer) 灵感来源是这篇文章, http://hi.baidu.com/suifeng_89/item/603cb0b95bb796ff62388e88 实现步骤: 1、先开一个request去下载要播放的视频文件 2、在本地开一个http server

iOS开发 给TableView增加SearchBar

无人久伴 提交于 2020-01-16 04:33:36
效果如图: 可以根据输入的关键字,在TableView中显示符合的数据。 图中分组显示和索引效果,前面的博文已经记录,不再赘述。下面的例子是基于前文的基础上修改的,所以文件名啥的,请参考前文。 第一步是在TableView上方添加一个Search Bar,这里有一点需要注意,必须先把TableView拖下来,留下空间放Search Bar,不要在Table View占满屏幕的情况下把Search Bar拖到Table View顶部。区别在于,使用后面的方法,Search Bar是作为Table View的Header部分添加的,而前面的方法,Search Bar是独立的。在添加索引功能时,如果作为Table View的Header添加,右侧的索引会遮住Search Bar的右边部分。Search Bar几个常用属性: Placeholder是提示,就是hint属性,Corretion是自动修正,一般设为NO,即不修正,Show Cancel Button是显示取消按钮,我这里勾选。选中Search Bar的情况下切换到Connections Inspector面板,delegate与File’s Owner建立连接(我们会在ViewController中支持UISearchBarDelegate协议)。与前面几篇文章的例子相 同

iOS开发之上传pdf格式文件

妖精的绣舞 提交于 2020-01-15 15:04:19
- (void)presentDocumentPicker { NSArray *types = @[@"com.adobe.pdf"]; // 可以选择的文件类型,下面有关于type的解释 UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:types inMode:UIDocumentPickerModeOpen]; documentPicker.delegate = self;//(UIDocumentPickerDelegate) documentPicker.modalPresentationStyle = UIModalPresentationFullScreen; [self presentViewController:documentPicker animated:YES completion:nil]; } #pragma mark - UIDocumentPickerDelegate - (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray<NSURL *

关于 Flutter IOS混合开发打包Framework集成到原生IOS工程 和 flutter_boost使用

风流意气都作罢 提交于 2020-01-15 00:58:20
参考 https://juejin.im/post/5d79af99e51d453c11684ce8 flutter_boost从0.1.53开始提供了swift demo,但example_swift居然跑不起来,oc的example可以。 1、 直接把example Flutter下的Debug.xcconfig、Release.xcconfig、AppFrameworkInfo.plist拷过来 更新分割线------------------- 这个blog的集成方法好像没集成插件- -,不过应该是move脚本有些问题没把所有framework文件cp过去,继续参考 https://www.kikt.top/posts/flutter/exists/add-flutter-to-ios/?tdsourcetag=s_pctim_aiomsg 将四个framework文件都install进来,然后和android一样调路由和通信 报错1: Could not cast value of type 'TabbarController' (0x1055dc680) to 'UINavigationController' 解决: PlatformRouterImp.swift func navigationController() -> UINavigationController

iOS开发-OC、C、C++ 混编

随声附和 提交于 2020-01-14 14:33:08
OC里面的有三大类文件.m/.h(OC),.c/.h (C),.cpp/.hpp(C++)。 一、在OC中调用C或者C++ 如果是.m文件,可以用OC和C的代码; 如果是.mm文件,可以用OC和C和C++的代码; .m 和.mm 的区别是告诉编译器在编译时要加的一些参数。.mm也可以命名成.m,手动加编译参数。 二、在C++中调用OC PIMPL (Private Implementation, 私有实现) 不要在C++中依赖ARC,最好自己手动管理。 遇到的问题: 1,尝试在同一个文件中调用oc、c、c++,ld: symbol(s) not found for architecture x86_64。 问题出现的原因和OC无关,在c++中引用c的头文件,需要用extern "C"{}把代码包括起来。详细原因见下: http://stackoverflow.com/questions/9334650/linker-error-calling-c-function-from-objective-c 2,在c++中调用OC时遇到了问题,在.cpp文件中调用OC的类,在Foundation处报错。 问题出现在.cpp文件用的是纯粹的c++编译。 解决方案:把实现放在.mm。 learnCplus(1, 2); //在OC中使用c learnCplusplus(1, 2); /