当前位置:  编程技术>移动开发
本页文章导读:
    ▪UIPopoverController 使用小节      UIPopoverController是iPad上的iOS开发会常用到的一个组件(在iPhone设备上不允许使用),这个组件上手很简单,因为他的显示方法很少,而且参数简单,但我在使用过程中还常碰到各种问题,直到.........
    ▪iOS下ffmepg开发的一些参考资料汇总(陆续更新)      近来在搞iOS下视频播放,研究了ffmpeg,现将看到比较好的资料汇总一下,方便自己或者有需要的人查阅。 1、iOS下ffmpeg的编译,网上有很多资料,但很多都有些问题的,找了几天,发现这个资.........
    ▪Java--线程生命周期,线程控制      新建--就绪--(阻塞)--运行--死亡 线程状态。线程可以处于下列状态之一: NEW 至今尚未启动的线程处于这种状态。 RUNNABLE 正在 Java 虚拟机中执行的线程处于这种状态。 BLOCKED 受阻塞并等待.........

[1]UIPopoverController 使用小节
    来源:    发布时间: 2013-11-15

UIPopoverController是iPad上的iOS开发会常用到的一个组件(在iPhone设备上不允许使用),这个组件上手很简单,因为他的显示方法很少,而且参数简单,但我在使用过程中还常碰到各种问题,直到今天我感觉才把他的用法完全搞明白。

先看他的继承关系,UIPopoverController是直接继承自NSObject,它和UIViewController没有半毛线关系.那它是怎么实现弹出在所有View之上的,我猜测是利用了keywindow,把这个View加在keywindow里面,我做了个试验,一般我们会在AppDelegate的didFinishLauch(大概是这么个方法)中来初始化我们的window,把应用的第一个viewcontroller加到window中去,并在最后调用window的makekeyandvisible方法。于是我尝试在window实例调用makekeyandvisible方法的之前弹出一个UIPopoverController,于是得到了下面的错误:

  • ***Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:'-[UIPopoverController presentPopoverFromRect:inView:permittedArrowDirections:animated:]: Popovers cannot be presented from a view which does not have a window.'
  • 所以我猜UIPopoverController就是把你提供的Viewcontroller包起来加一个arrow框和背景,加到keywindow中去。另外如果你在显示地时候传入的BarButtonItem为nil,也会报这个错误,但实际上和window无关。

    UIPopoverController的方法:

  • – initWithContentViewController://很简单的初始化方法,把你要展示的Viewcontroller传给它
  • – setContentViewController:animated://可以在UIPopoverController还在显示的时候动态地更换ContentViewController.
  •  
  • – setPopoverContentSize:animated://设置PopOverController的展示框大小,虽然文档中说它会根据ContentViewController的大小来设置自己的宽高,但我发现如果你不显示地调用这个方法并传入ContentViewController的size,一般情况它的大小会小于ContentViewController。
  •  
  • – presentPopoverFromRect:inView:permittedArrowDirections:animated://显示这个UIPopoverController,下面详细说
  • – presentPopoverFromBarButtonItem:permittedArrowDirections:animated://显示这个UIPopoverController,比较简单,传入BarButtonItem的实例
  • – dismissPopoverAnimated://让它消失
  •  
  • 关于显示方法,
    – presentPopoverFromRect:inView:permittedArrowDirections:animated:
    这个方法需要传入一个CGRect和一个View,而只有这个CGRect的值是相对于这个View的,这个Arrow才能指到正确的位置。我猜测它是在视图树中向上搜索把它转化为在keywindow中的值再显示。举个例子,如果你要箭头指向被点击的这个button,那么一种方法是:

  • [xxx presentPopoverFromRect:button.bounds inView:button permittedArrowDirections:xx animated:YES];
  • 一种方法是转换为他的父视图中的CGRect:

  • [xxx presentPopoverFromRect:button.frame inView:button.superview permittedArrowDirections:xx animated:YES];
  • UIPopoverController的外观
    通过popoverBackgroundViewClass属性和popoverLayoutMargins,你就可以自己定制Popover的外观了,popoverLayoutMargins是指你的popover相对于整个window上下左右的margin,当你设置的值大于它目前的值的时候,它才会调整(也就是让它自己更小的margin才会被实现).另外通过subclass UIPopoverBackgroundView,并把该class指定给popoverBackgroundViewClass属性,你就可以随意改变他的外观了。

    UIPopoverController的内存管理
    根据目前我使用的情况来看,我常用的使用方式是在属性中声明一个 retain 的 UIPopoverController,然后在创建的时候指向创建的临时变量,然后释放临时变量.我还没有发现更方便的内存管理的方法,UIPopoverController和UIActionSheet有点不一样,你必须自己来retain这个UIPopoverController,如果在UIPopoverController还没有dismiss的时候你就release掉了,就会出错。当然,你可以把UIPopoverController的delegate设为self,然后在popoverControllerDidDismissPopover中释放他,但我感觉这样还不如采用属性更方便,因为你没法代码控制popover的消失了,总得维护一个引用,当然,象我这种方法得话,你很多时候是在延迟释放这个popOver了。一般来说,你可以经常使用这样得代码:

  • [self.pop dismissPopoverAnimate:xx];
  • self.pop=nil;
  • 因为给nil发送一个dismissxx是没有问题的,然后再释放,这样可以保证内存不混出错。当然,如果实在不放心,可以总是在前面加一个if(!=nil)的判断.

    UIPopoverController防止点击区域外消失
    UIPopoverController的默认行为是,当你点击UIPopoverController以外的区域时,它会消失,改变这种行为就要利用属性passthroughViews.它的意思是,UIPopoverController点击在它的区域外,如果点到了passthroughViews中的View的时候,是不会消失的。我写了demo试了一下,passthroughView中被点击的View以及其SubView都不会让UIPopoverController消失。

    本文链接


        
    [2]iOS下ffmepg开发的一些参考资料汇总(陆续更新)
        来源: 互联网  发布时间: 2013-11-15

    近来在搞iOS下视频播放,研究了ffmpeg,现将看到比较好的资料汇总一下,方便自己或者有需要的人查阅。

    1、iOS下ffmpeg的编译,网上有很多资料,但很多都有些问题的,找了几天,发现这个资料说得比较详细。

    http://www.cnblogs.com/ikodota/archive/2012/09/12/compile_ffmpeg_for_iOS.html

    不过按这篇文章介绍的方法编译出来的库文件比较大,原因是它使用的编译参数较少,所以很多模块都会编译进去,自己可以根据需要进行优化,加入参数,将不需要的模块禁止。编译参数可以多参考几篇相关的文字,综合一下。

    2、开源示例iFrameExtractor (git clone git://github.com/lajos/iFrameExtractor.git),这是一个iOS下利用ffmpeg解码播放的例子。不过这个例子是利用贴图的方式来显示,效果不是很好,而且没有加入声音解码。

    3、iOS播放rtsp流的例子,经过测试,rtmp流也可以播放。

    https://github.com/mooncatventures-group/RTSPPlay

    4、学习ffmpeg+sdl的教程,号称可以用少于1000行代码写一个播放器。

    http://dranger.com/ffmpeg/

    5、ffmpeg4iphone,一个ffplay的例子,可以编译运行,但看不到播放界面,不知道为啥,没深入研究。

    http://code.google.com/p/ffmpeg4iphone/

    另外一些在论坛上别人介绍的资源,也贴在这里:

    1、Mooncatventures group https://github.com/mooncatventures-group

    2、KxMoviePlayer (use OpenGLES, Core Audio) https://github.com/kolyvan/kxmovie

    3、FFmpeg for ios (with OpenGLES, AudioQueue) https://github.com/flyhawk007/FFmpeg-for-iOS.git

    作者:sing_sing 发表于2013-1-5 16:29:51 原文链接
    阅读:31 评论:0 查看评论

        
    [3]Java--线程生命周期,线程控制
        来源: 互联网  发布时间: 2013-11-15

    新建--就绪--(阻塞)--运行--死亡

    线程状态。线程可以处于下列状态之一:

    • NEW
      至今尚未启动的线程处于这种状态。
    • RUNNABLE
      正在 Java 虚拟机中执行的线程处于这种状态。
    • BLOCKED
      受阻塞并等待某个监视器锁的线程处于这种状态。
    • WAITING
      无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。
    • TIMED_WAITING
      等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。
    • TERMINATED
      已退出的线程处于这种状态。

    在给定时间点上,一个线程只能处于一种状态。这些状态是虚拟机状态,它们并没有反映所有操作系统线程状态。

     

     

     

    线程控制
     start() 启动线程
     
     interrupt()  中断线程,唤醒正在休眠线程
     
     检测当前线程是否被中断
     isInterrupted()  只检查中断标志
     interrupted()  检查并清除中断标志
     
     Thread.sleep()  线程休眠,清除当前中断标志
     
     Thread.currentThread()  获取当前线程对象
     
     getPriority()  获取线程优先级
     setPriority()  修改线程优先级,linux没有实现
     
     
     
    容易造成死锁(全都已过时)
     stop()   停止
     suspend()  挂起
     destory()    销毁
     resume()  

    作者:zlQQhs 发表于2013-1-5 16:24:49 原文链接
    阅读:62 评论:0 查看评论

        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    HTML教程 iis7站长之家
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3