11 ios 粘贴功能改变_h5复制粘贴功能ios - CSDN
精华内容
参与话题
  • 框架下,是iOS3.0之后发布的,它是一个长按呼出框,自带有复制、剪切、粘贴、全选、删除等等功能。文档里面定义如下图****本次要实现的功能是 在加载了HTML字符串的UIWebView中实现自定义长按呼出框。1.默认情况下,...

    -先说下背景,`UIMenuController`类基于<UIKit>框架下,是iOS3.0之后发布的,它是一个长按呼出框,自带有复制、剪切、粘贴、全选、删除等等功能。文档里面定义如下图

    ****本次要实现的功能是 在加载了HTML字符串的UIWebView中实现自定义长按呼出框。

    1.默认情况下,UITextFiled、UITextView、UIWebView这三个类及其子类都有自带的长按弹出UIMenuController功能,所有除了这三个以外,有需求的需要自己添加手势实现,实现方法与本文谈到的大同小异。

    2.要使当前页面成为第一响应者。

    3.屏蔽系统自带的弹出功能


    *********下面开始

    >首先创建UIMenuController,可以在需要实现的webview的构造方法里面创建代码如下:(此处我根据需求将UIWebView需要加载的内容由初始化赋值,并在调用属性setter方法的时候加载出来)

    - (instancetype)initWithFrame:(CGRect)frame content:(NSString *)content
    {
        self = [super initWithFrame:frame];
        if (self) {
            
            [self becomeFirstResponder];
            
            [self createMenu];
            
            self.content = content;
        }
        return self;
    }
    
    
    //构建UIMenuController
    - (void)createMenu {
    
        UIMenuController *menu = [UIMenuController sharedMenuController];
        UIMenuItem *item0 = [[UIMenuItem alloc] initWithTitle:@"复制" action:@selector(copy:)];
        UIMenuItem *item1 = [[UIMenuItem alloc] initWithTitle:@"全选" action:@selector(selectAll:)];
        UIMenuItem *item2 = [[UIMenuItem alloc] initWithTitle:@"打印选中文字" action:@selector(logSelectedText:)];
        
        [menu setMenuItems:@[
                             item0,
                             item1,
                             item2]];
    }
    
    //内容的setter方法里面加载
    - (void)setContent:(NSString *)content {
        
        _content = content;
        [self loadHTMLString:content baseURL:nil];
    }


    >注意要弹出UIMenuController必须完成三个步骤

     1.在UIWebView中调用becomeFirstResponder方法。

     2.在UIWebView中重写父类方法canBecomeFirstResponder并且 return Yes。

     3.在UIWebView中重写canPerformAction:withSender:方法,来筛选出需要响应的item

     第三点实现代码如下:

    //指定menu响应事件屏蔽系统自带响应事件

    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {


        if (action ==@selector(copy:) ||

            action == @selector(selectAll:) ||

            action == @selector(logSelectedText:)) {

            

            returnYES;

        }

        

        returnNO;

    }

    >截止此处,就可以看到弹出的UIMenuController了,效果图如下:


    >那么现在还存在俩个问题

     1.赋值和全选都出现了俩次,且他们都是有效的。

     2.打印选中文字还没实现,也没找到API直接获取这个选中文字的。

    >针对问题1 是因为系统自带的和我们自定义都筛选出来了,解决办法是可以在我们开始的UIMenuController生成的地方删除这俩个重复的UIMenuItem.

     那么此处涉及到它会显示"copy" "cut"俩个英文。如果支持中文需要到工程中配置一下Project->Info->Localizations里面找到Chinese(simplified)并添加。

     此处注意这样添加后显示的语言是根据手机或者模拟器设置的语言而定的。 配置如下:


    >针对问题2  首先需要讲一下 cut: copy:等系统自带的方法,这些方法通通放在了UIResponderStandardEditActions协议中.具体有以下方法:

    //    @protocol UIResponderStandardEditActions <NSObject>
    //    @optional
    //    - (void)cut:(nullable id)sender NS_AVAILABLE_IOS(3_0); //剪切
    //    - (void)copy:(nullable id)sender NS_AVAILABLE_IOS(3_0); //复制
    //    - (void)paste:(nullable id)sender NS_AVAILABLE_IOS(3_0); //粘贴
    //    - (void)select:(nullable id)sender NS_AVAILABLE_IOS(3_0); //选择
    //    - (void)selectAll:(nullable id)sender NS_AVAILABLE_IOS(3_0); //全选
    //    - (void)delete:(nullable id)sender NS_AVAILABLE_IOS(3_2);    //删除
    //    - (void)makeTextWritingDirectionLeftToRight:(nullable id)sender NS_AVAILABLE_IOS(5_0); //改变书写模式为从左向右按钮触发
    //    - (void)makeTextWritingDirectionRightToLeft:(nullable id)sender NS_AVAILABLE_IOS(5_0); //改变书写模式为从右向左按钮触发
    //    
    //    //以下方法调用会导致程序崩溃  具体原因再研究
    //    - (void)toggleBoldface:(nullable id)sender NS_AVAILABLE_IOS(6_0);
    //    - (void)toggleItalics:(nullable id)sender NS_AVAILABLE_IOS(6_0);
    //    - (void)toggleUnderline:(nullable id)sender NS_AVAILABLE_IOS(6_0);
    //    
    //    - (void)increaseSize:(nullable id)sender NS_AVAILABLE_IOS(7_0);
    //    - (void)decreaseSize:(nullable id)sender NS_AVAILABLE_IOS(7_0);
    //    
    //    @end
    然后就是实现我们自定义的打印出选中文字的方法。我找了一下,并有找到UIMenuController有直接的属性获取选中的文字,固寻求其他解决途径。

           有俩种解决方法仅供参考:

          1.利用js代码直接获取UIWebView中被选中的文字

    //UIWebView自带获取选中文字的方法
    - (NSString *)getSelectedText {
    
        return [self stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];
    }
    2.利用UIMenuController带的赋值方法将内容赋值到粘贴板,再从粘贴板获得所需内容

        //先复制到粘贴板 再打印粘贴板上的内容
        [self copy:menu];
        NSLog(@"选中的文字为:%@", [UIPasteboard generalPasteboard].string);


    ----------------17.11.6更新-----------------

    遇到俩三个同学问我适配WKWebView之后上面的代码不能很好的支持。之前帮一个同学解决了又忘记了,今天又被问到,感谢@灯红酒绿映不出的落寞 提供的思路。

    因为WKWeb用相同的方法写会出现一个问题就是不能屏蔽系统的一些方法。

    canPerformAction: withSender:
    解决办法是把UIMenuController提出来写到ViewController层,所以在这儿需要实现一个方法就是禁止对象取消第一响应

    - (BOOL)canBecomeFirstResponder {
        return YES;
    }
    - (BOOL)canResignFirstResponder {
        return NO;
    }
    这样写功能是实现了,但是存在一个bug.理论上一个viewcontroller被pop出navigationController的栈之后会释放,但是这个对象似乎没有完全消失,因为我们写了这个对象禁止取消第一响应,其他的对象就不能再响应了。有时候这个bug也会表现为在定义着不同的UIMenuController的不同视图中表现为同一个。所以我们在视图消失的时候应该允许他取消第一响应,而视图存在的时候不行。

    - (BOOL)canBecomeFirstResponder {
        return YES;
    }
    - (BOOL)canResignFirstResponder {
        
        if (_dismissSelf) {
            
            return YES;
        }
        return NO;
    }

    没有懂的同学把这个判断取消就明白了。我在UIWebView中允许出现“拷贝,全选,打印选中文字”,在WK中允许出现“自定义复制,添加笔记”。

    结合Demo,第一次用UIWebView正常,用了WK没加上面判断之后再看UIWebView异常



    Github上面已经更新。

    ----------------18.1.9更新-----------------

    有小伙伴问到使用WKWebView用我上面的方法做出来没有全选功能,想要添加一个全选功能。
    其实很简单
    我试过直接屏蔽函数中添加不屏蔽selectedAll:,但是会造成程序崩溃,有兴趣的可以试试写一个WKWebview的子类屏蔽看看。
    canPerformAction: withSender:
    另一种思路就是按照之前添加自定义功能的方法添加一个方法叫做“全选”。
    1.添加一个UIMenuItem叫做“全选”。
    2.在屏蔽函数中打开我们自定义的全选。(注意方法名不要和系统方法名冲突)
    3.实现自定义全选。利用[WKWebView selectAll:]函数,注意实现之后把允许视图取消第一响应的判定改一下,不然会出现全选异能取消的BUG.


    遗留了一个bug就是我们使用过一次全选功能之后,以后再打开UIMenuController有几个系统方法就不能屏蔽了(因为之后不会再调用[self canResignFirstResponder]方法,现在使用Wk的时候系统方法这块确实API有一定的问题,很多实现都是屏蔽UIMenuController采用UIAlertController来替代),希望有解决办法的小伙可以不吝赐教,谢谢!



    --------------18.3.29日更新-----------

    有小伙伴问到,选中执行菜单项的某个功能后,选中的文本和那对蓝色条都不会消失。我测试了一下确实存在这个问题。这块之前就说过系统API是存在一定问题的,但是迫于功能需求,只能寻找一些不太完美的方法来解决。

    1.刚开始想通过执行菜单项的某个功能后,就用代码模拟一次用户点击屏幕来取消掉选中的文字和蓝色条。此处发现一些东西可以和大家分享一下

       >>方法 sendActionsForControlEvents可以对UIControl及其子类直接发送响应,例如UIButton,可以用代码写模拟点击.然而UIView       是UIControl父类,故不能使用

        

      >>方法模拟UITouch和UIEvent 调用 touchesBegan方法,参考文章http://www.cocoawithlove.com/2008/10/synthesizing-touch-event-on-iphone.html 。   其中涉及私有API,可能对上线有影响,感兴趣的可以了解一下。

    2.最终还是利用一个取巧的办法,在执行菜单项的某个功能后,重新加载一个web即取消了其选中的文字。

    PS:有更好办法的同学欢迎分享交流。


    ***以上

    (欢迎随手给一颗星星哦~)本篇博客Demo地址https://github.com/xmy0010/DemoForCSDN

    本人邮箱18144200589@163.com欢迎小伙伴一起讨论,学习,进步。





    展开全文
  • mac开发与iOS开发的区别

    万次阅读 2011-09-06 09:46:18
    iOS是从MacOS衍生出来的专门未为移动设备(iphone)推出的操作系统。 iOS和Mac OS的UI观念有很大差别,iOS主要支持手势操作,包括多触点技术等等。 从开发人员观点看,iOS和macos相比,对普通开发人员多加了不少限制...
    iOS是从MacOS衍生出来的专门未为移动设备(iphone)推出的操作系统。
    iOS和Mac OS的UI观念有很大差别,iOS主要支持手势操作,包括多触点技术等等。
    从开发人员观点看,iOS和macos相比,对普通开发人员多加了不少限制。

    两者的框架有一定的差异:
    框架差异
    虽然iOS的大多数框架同样存在于 Mac OS X系统,但不同平台框架具有不同的实现方式和使用方式。下面收集了一些Mac OS X 开发者开发iOS应用程序需要注意的重要差别:
    UIKit 与 AppKit 的对比
    在 iOS系统中,创建图形应用程序、管理事件循环以及执行其他界面相关的任务都离不开UIKit提供的基础结构。UIKit和AppKit具有非常显著的区别,在设计iOS应用程序的时候,应该特别注意这一点。也正是因为这个原因,在将Cocoa应用程序迁移到iOS系统的时候,您必须提供和界面相关的类和逻辑。表6-1列出了框架之间的特定的差异,它可帮助您理解iOS中的应用程序应该具有什么特征:

    表 6-1  界面技术的差异
    差异
    讨论
    文档支持
    在iOS系统中,文档角色的重要性有所降低,简单内容模型则变的越来越重要。因为iOS系统的应用程序通常只拥有一个窗口(在不连接外部显示的情况下),主窗口是创建及编辑所有应用程序内容的唯一环境。更重要的是,所有和文档相关的操作,包括文件的创建和管理,现在都由应用程序在幕后完成,不再需要用户干预。
    视图类
    UIKit为您提供一组非常有针对性的视图和控件。AppKit框架有许多视图和控件无法在iOS设备上工作,其他一些视图则被更具iOS特色的视图替代。例如,在显示分层信息的时候,iOS不使用 NSBrowser类,而是使用完全不同的样式(导航控制器)。如需了解iOS中的视图和控件及其使用方式,请查看iPhone人机接口准则。
    视图座标系统
    iOS系统Quartz和UIKit内容的绘画模型和Mac OS X的基本相同,只有一处例外。在 Mac OS X绘画模型坐标系统中,窗口和视图的原点默认位于左下角,坐标轴向上向右延伸。但在iOS系统中,默认的原点位置是左上角,坐标轴向下向右延伸。Mac OS X的座标系统称为“被翻转”的座标系统,iOS则是缺省座标系统。如需进一步了解图形和座标系统,请查看iOS视图编程指南。
    窗口即视图
    从概念上来看,iOS系统的窗口和视图Mac OS X的具有相同含义。但从实现的角度来看,区别很大。在Mac OS X系统中,NSWindow类是NSResponder类的子类,但在iOS系统中,UIWindow实际是UIView的子类。继承关系上的改变表明窗口将会使用Core Animation层来绘制外表。之所以有这样的改变,主要是为了在操作系统级别支持窗口分层。举个例子,系统可以在一个独立的窗口中显示状态栏,并让该窗口浮动于应用程序窗口之上。
    iOS系统和Mac OS X系统另外一个差异和窗口的使用方式相关。Mac OS X应用程序可以用于任意数量的窗口,但大多数iOS应用程序只能有一个窗口。在iOS应用程序中显示不同屏幕的数据不是通过改变窗口实现,而是通过在应用程序窗口中切换定制视图来完成。
    事件处理
    UIKit的事件处理模型和Mac OS X的事件处理模型区别很大。UIKit框架不向视图发送鼠标和键盘事件,而是发送触摸和移动事件。这些事件不但要求您实现一组不同的方法,同时也要求您修改整个事件处理代码。举个例子,本地跟踪循环的排队事件不能包含触摸事件,您的代码也据此做相应调整。如需进一步了解iOS应用程序的事件处理,请参考iOS事件处理指南。
    目标-动作模型
    UIKit支持三种形式的动作,AppKit仅支持一种。UIKit的控件可以在不同的交互阶段调用唤醒不同动作,而且一个交互过程可以指定多个目标。因此,在UIKit中,一个控件可以在一次交互过程中向多个目标发送多个不同的动作。如需进一步了解iOS应用程序的目标-动作模型,请查看iOS事件处理指南。
    绘画及打印支持
    为支持UIKit渲染需要,UIKit的绘画能力经过适当的调节。它支持图片的加载和显示、字符串显示、颜色管理、字体管理以及多个用于渲染矩阵和获取图形上下文的函数。UIKit不包含通用目的的绘图类,因为iOS系统使用其他方式完成此类功能(即Quartz和OpenGL ES)。
    iOS系统部支持打印功能,iOS设备不能连接打印机或其他相关的打印硬件。
    如需进一步了解图形和绘图方面的信息,请查看iOS视图编程指南。
    文本支持
    撰写电子邮件和记事本是iOS系统提供的主要的文本支持。UIKit类可以让应用程序显示并编辑简单的字符串和稍微复杂点的HMTL内容。
    在iOS 3.2及后续系统中,Core Text框架 和UIKit框架提供更加精密的文本处理能力,您可以通过这它们实现更精密的文本编辑及展现视图,也可通过它们定制视图提供的输入方法。如需进一步了解文本支持相关的信息,请查看iOS文本和Web编程指南。
    存取方法的使用和属性对比
    UIKit在其类声明中大量使用属性。属性由Mac OS X在10.5版本引入,是AppKit框架大量的类创建出来以后才出现。属性不是对AppKit框架getter和setter方法的简单模仿,而是被UIKit用于简化类接口。如需了解属性的使用方式,请查看Objective-C 编程语言中的“属性声明”。
    控件和单元
    UIKit控件不使用单元。单元被Mac OS X作为视图的轻量级替代物。但是UIKit视图本身就是非常轻量的对象,因此单元派不上用场。虽然在命名约定上,UITableView类也用到了单元这个词,但是此处的单元实际上是UITableView的子类。
    表视图
    iOS系统的 UITableView 类可以看成是AppKit框架中NSTableView和NSOutlineView的折中物。它结合Appkit框架中者两个类的特征,更适合在小屏幕上显示。 UITableView一次显示一列数据,而且您将相关的行组合成一个区段。UITableView也可用于显示并编辑分层列表数据。如需进一步了解UITableView类,请查看UITableView类参考。
    菜单
    几乎所有iOS应用程序的命令集都比类似的Mac OS X应用程序小得多,因此,iOS不支持菜单,通常也用不到菜单。对于需要少数的命令的场合,使用工具栏或者一组按键更加合适。对于需要数据菜单的场合,使用拾取器或导航控制器界面通常更合适,而如需对上下文敏感的菜单,则可其中的菜单项显示在Edit菜单,用它们替代或补充剪切、复制或者粘贴等命令。
    Core Animation 层
    在 iOS系统中,所有外表的绘制都由Core Animation层实现。该框架还隐式为许多视图相关属性提供的动画支持。由于这种内建的动画支持,您就不需要在代码中显示使用Core Animation层,只需更改一下视图的某些属性即可实现大多数动画。只有当需要对分层进行精确控制或者不想将某些特征暴露于视图层,您才需要直接使用Core Animation。如需了解将Core Animation层整合到iOS绘图模型的方式,请查看iOS视图编程指南。
    如需了解UIKit的类信息,请查看UIKit框架参考。

    Foundation 框架的差异
    Mac OS X和 iOS都有Foundation框架,大多数您所预期的类都可以在该框架中找到。 两个平台的框架都支持数值管理、字符串、集合、线程以及许多其他常见的数据类型。表6-2列出一些不包含于iOS框架的重要功能以及相关类不存在的缘由,同时也尽量列出有哪些技术可作为替代。

    表 6-2  iOS的Foundation不具有的技术
    技术
    注意事项
    元数据和预测管理
    iOS不支持Spotlight 元数据和搜索预测,因为iOS不支持Spotlight。
    分布式对象和端口名称服务管理
    iOS不存在分布式对象技术,但是您可以使用NSPort家族类和端口(及socket)进行交互交互。您也可以使用Core Foundation和CFNetwork框架处理网络需求。
    Cocoa绑定
    iOS不支持Cocoa绑定,而是使用经过少量修改的目标-动作模型。因为这种方式可以让代码对动作的处理方式有更多的灵活性。
    Objective-C垃圾收集
    iOS不支持垃圾收集,您必须使用内存管理模型。您需要通过保持对象来宣告对对象的拥有权,并在不需要对象的时候释放对象。
    AppleScript支持
    iOS不支持AppleScript。
    iOS系统的Foundation框架提供对XML的支持,您可以通过 NSXMLParser 类解析XML文件,其他解析类(包括NSXMLDocument、NSXMLNode)不受支持。除了NSXMLParser之外,您还可以使用libXML2库,这是C语言的XML解析接口。

    如果需要了解哪些类存在于Mac OS X而不存在于iOS,请查看位于Foundation框架参考中的“Foundation 框架”的类层次图。

    其他框架的改变
    表 6-3列出iOS其他框架的关键差异。

    表 6-3  同时存在于iOS和Mac OS X的框架之间的差异
    框架
    差异
    AddressBook.framework
    该框架接口可用于访问用户的联系人信息。虽然名称相同,但是此框架的iOS版本和Mac OS X版本却有很大的区别。
    在iOS系统中,除了访问联系人数据的C接口,您还可以使用Address Book UI框架提供的类展现标准联系人挑选和编辑界面。
    如需进一步的信息,请查看Address Book框架参考。
    AudioToolbox.framework
    AudioUnit.framework
    CoreAudio.framework
    在iOS系统中,这些框架支持音频录制、播放以及单声道和多声道的音频内容混合,但不支持更高级的音频处理功能和定制音频单元插件。不过iOS系统增加了一个功能,即触发iOS设备(具有相应硬件)的震动功能。如果需要了解如何使用音频支持,请查看iOS应用程序编程指南中的多媒体支持 。
    CFNetwork.framework
    该框架包含Core Foundation Network接口。在iOS系统中,CFNetwork框架是顶层框架,它没有子框架。该框架的接口大部分保持不变。如需进一步信息,请查看CFNetwork框架参考。
    CoreGraphics.framework
    该框架包含Quartz接口。在iOS系统中,Core Graphics框架是顶层框架,它没有子框架。使用Quartz创建路径、渐变、阴影、图案、图像以及位图的方式和Mac OS X系统完全相同。不过有一些Quartz的功能(包括PostScript支持、图像来源和去向、Quartz显示服务支持、Quartz事件服务支持)不存在于iOS系统。如需进一步信息,请查看Core Graphics框架参考。
    OpenGLES.framework
    OpenGL ES 是专为嵌入式系统设计的OpenGL版本。如果您是OpenGL开发人员,则应该会很熟悉OpenGL ES接口。不过,OpenGL ES接口还是有几点较大差别。首先,它是一套更加小巧的接口,仅支持可以在现有图形硬件有效执行的功能。第二,许多桌面OpenGL可以使用的扩展并不存在于OpenGL ES。虽然如此,您应该还是能够执行大多数和桌面OpenGL相同的操作。但如果你是在迁移现有的OpenGL代码,则可能需要重写一部分代码,需要使用iOS系统的渲染技术(不同于Mac OS X)。如需了解iOS对OpenGL ES的支持,请查看iOS OpenGL ES编程指南。
    QuartzCore.framework
    该框架包含Core Animation接口。iOS大部分 Core Animation接口和Mac OS X相同。但是iOS系统没有用于管理布局约束的类,也不支持使用Core Image过滤器。另外,iOS也没有Core Image和Core Video接口(两者都包含于Mac OS X版本的QuartzCore框架)。如需进一步信息,请查看Quartz Core框架参考。
    Security.framework
    该框架包含安全接口。在iOS系统中,该框架通过加解密、伪随机数生成以及Keychain保护应用程序数据安全。该框架不包含身份验证或身份验证接口,也不支持显示证书内容。Keychain接口也是Mac OS X版本的简化。如需了解iOS的安全支持,请查看iOS应用程序编程指南。
    SystemConfiguration.framework
    该框架包含和网络相关的接口。在iOS系统中,您可以使用这些接口来决定设备如何与网络连接,是通过EDGE、GPRS或是通过Wi-Fi。
    展开全文
  • 这是iOS 11 新增4个新功能的其中一个(自动卸载长期未使用app),当您开启之后,iPhone就会自动卸载掉未使用的应用,不过应用的文稿和数据将会保存。当您需要继续使用此应用时,就要重新下载安装。 ### 下面粘贴4个...

    这是iOS 11 新增4个新功能的其中一个(自动卸载长期未使用app),当您开启之后,iPhone就会自动卸载掉未使用的应用,不过应用的文稿和数据将会保存。当您需要继续使用此应用时,就要重新下载安装。

    ### 下面粘贴4个新功能的内容

    1.自动卸载未使用的应用

    很多人,尤其是16G的用户,下载个新app都得想一想存储空间够不够,要不要删掉一些东西。

    虽然有些app平时较少使用,但在某些关键时刻却很有用。这时候我们会很纠结:因为删除app会失去所有数据,留着又很占空间。

    接下来你可能不用再纠结了,iOS 11系统新增了设置「存储空间」-「卸载未使用的应用」。

    iOS 11这4个新功能太赞:自动卸载长期未使用app

    当存储空间不足时,我们可以选择自动卸载未使用(或长时间未使用)的应用,但是数据将会被保留。

    如果你某一天又需要用到这个应用,只需要重新下载就行,数据什么的都在。这个功能默认关闭,必要时你可以考虑开启这个功能为手机「瘦身」啦。

    2.控制中心添加蜂窝数据开关

    千呼万唤始出来,iOS 11终于有移动网络的快捷开关了。

    iOS 10或之前的系统,如果你要开关手机的移动网络,需要点击「设置」-「蜂窝移动网络」才能开启,很不方便。

    iOS 11这4个新功能太赞:自动卸载长期未使用appiOS 10与iOS 11的控制中心

    在iOS 11,你只需要上划打开「控制中心」,便可以很方便地开关「蜂窝移动网络」。

    此外,你还可以控制音乐播放、调节手机音量等。整个控制中心就像一个万能的遥控器。

    3. 照片太多?用这个方法快速「瘦身」

    现在手机的镜头越来越强大,像素也越来越高,但随之而来的问题就是照片或者视频占用的空间不断增加。

    随便一张照片就要好几MB,一个短视频也至少要几十MB,更不用说拍摄4K视频了……手机的内存不知不觉就被这些照片跟视频「吃」完了。

    这时候如果要清理照片和视频,需要你手动一个个去筛选勾选,花费大量的时间。

    iOS 11这4个新功能太赞:自动卸载长期未使用app

    而现在,你只需要打开设置里面的「iPhone存储空间」,系统就会根据你手机里内存的使用情况,自动扫描出可清理的大文件,点击即可快速清理。

    4. 一次性移动整理多个应用

    以往我们进行图标收纳整理的时候,需要一个个拖动,很是麻烦。

    在iOS 11里,系统的主界面没有明显改变,但是在桌面图标的收纳整理上,却有了一个容易被忽略的强大功能:批量移动应用的图标。

    iOS 11这4个新功能太赞:自动卸载长期未使用app

    展开全文
  • Unity-ARKit-Plugin这是一个苹果IOS原生插件,可以在IOS平在下为你的项目使用所有的 ARKit SDK功能

    unity使用苹果ARKit-01:Unity-ARKit-Plugin  unity使用苹果ARKit


    Unity-ARKit-Plugin


    这是一个原生插件,可以在IOS平在下为你的项目使用所有的 ARKit SDK功能。这个插件展示了 ARKit SDK的世界追踪性能,将相机视频输入,平面检测和更新,点云提取,光预估算和测试中的API呈现给Unity开发人员的AR项目中。这个插件是一个预览的质量构建的版本,应该有助于您使用这项技术并快速启动运行,但具体实施和API可能会改变来适应底层技术。


    该插件是开源的,并根据MIT许可证发布(请参阅此文件夹中的LICENSE文件)



    要求:.

    • Unity v5.6.1p1+
    • iOS 11+
    • Xcode beta 9 with latest iOS SDK that contains ARKit Framework
    • iOS device that supports ARKit (iPhone 6S or later, iPad (2017) or later)

    如何使用此代码:

    所示代码是一个Unity工程,可以在高于v5.6.1p1的版本中打开载入, Untiy工程包含了插件资源,一些演示场景,以及一些可以用在你自己工程上的组件。


    这是产检中一些重要文件的摘要:

    "/Assets/Plugins/iOS/UnityARKit/NativeInterface/ARSessionNative.mm" - 这是与ARKit SDK实际接口的Objective-C代码。


    "/Assets/Plugins/iOS/UnityARKit/NativeInterface/UnityARSessionNativeInterface.cs" - 这个脚本API到ARKit,并提供了本地代码的粘贴。


    这些内容包含了一下API:

            public void RunWithConfigAndOptions(ARKitWorldTackingSessionConfiguration config, UnityARSessionRunOption runOptions)
    
            public void RunWithConfig(ARKitWorldTackingSessionConfiguration config)
    
            public void Pause()
    
            public List<ARHitTestResult> HitTest(ARPoint point, ARHitTestResultType types)
    
            public ARTextureHandles GetARVideoTextureHandles()
    
            public float GetARAmbientIntensity()
    
            public int GetARTrackingQuality()  

    它还包含了可以提供给这些委托的事件:

            public delegate void ARFrameUpdate(UnityARCamera camera)
    
            public delegate void ARAnchorAdded(ARPlaneAnchor anchorData)
    
            public delegate void ARAnchorUpdated(ARPlaneAnchor anchorData)
    
            public delegate void ARAnchorRemoved(ARPlaneAnchor anchorData)
    
            public delegate void ARSessionFailed(string error)

    "/Assets/Plugins/iOS/UnityARKit/NativeInterface/AR*.cs" - 这些是暴露给ARKit相同的数据结构脚本。


    "/Assets/Plugins/iOS/UnityARKit/Utility/UnityARAnchorManager.cs" -这是一个实用工具,可以跟踪ARKit的锚更新,并可以为其创建相应的Unity游戏对象(有关如何使用参看GeneratePlanes.cs组件)。


    "/Assets/Plugins/iOS/UnityARKit/Editor/UnityARBuildPostprocessor.cs" - 这是一个在iOS上构建时运行的编辑脚本。


    ARKit 有用的组件:


    "/Assets/Plugins/iOS/UnityARKit/UnityARCameraManager.cs" -该组件应放置在通过ARKit引用要控制的摄像机的场景中的一个游戏对象,它将定位和旋转相机,并根据ARKit的更新提供正确的投影矩阵。该组件还具有初始化ARKit的代码

    "/Assets/Plugins/iOS/UnityARKit/UnityARVideo.cs" - 该组件应放置在相机上,并抓取渲染视频所需的纹理,并将其设置为对后挡板进行拼接所需的材质,并设置命令缓冲区以进行实际的发送。


    您应该能够将UnityARKitScene.unity构建到iOS中,以了解ARKit的功能。它演示了这个场景中ARKit的所有基本功能。

    请参阅本项目中的TUTORIAL.txt,了解有关逐步设置项目的更详细步骤。

    请随意扩展插件并发送请求。您还可以提供反馈意见,如果您希望改进或者想要建议更改。快乐的编码,玩得开心!



    ARKit for Unity 文件:  点击下载



    展开全文
  • iOS 与 Android 系统十年之战,究竟谁是赢家?

    万次阅读 热门讨论 2017-06-13 16:51:12
    苹果公司刚刚为 iPhone 发布了 iOS 11,而 Google 几周前也更新了 Android O。这两种系统几乎支持全球所有手机,那么,谁才是现阶段的赢家?
  • 1、IOS篇(用OC和C++混编) 头文件声明: public static void copy(std::string str); 实现如下: void copy(std::string str) {  //把string类型转换成为char*  char*p=(char*)str.data();  //把char*转换成OC...
  • iOS开发--------屏幕尺寸适配

    千次阅读 2017-09-14 11:16:49
    屏幕尺寸适配  2007 年,初代 iPhone发布,其拥有 3.5寸屏幕,运行 iPhone OS X。在后续几年中Apple 陆续发布了 iPhone 3GS,iPhone 4,iPhone 4S,iPhone 5C,iPhone 5S,iPhone 6,iPhone 6 Plus,iPhone 6S、...
  • TimLiu-iOS Swift版本点击这里 Objective-C版本点击这里 欢迎加入QQ群交流: 594119878 更新日期:2018-4-11 About A curated list of iOS objective-C ecosystem. How to Use Simply press command +...
  • ios各版本推出时间表

    千次阅读 2017-05-17 21:13:58
    ios1.0: iOS系统诞生于2007年1月1日的Macworld上,当天公布了iOS的初代系统,当时它的名字是iPhone OS X。 ios2.0: 紧接着2008年7月11日,在新一代iPhone3G正式发售当天,iPhone OS 2.0(iOS 2.0)也随之正式...
  • 自初春之际着手翻译《iOS11界面交互设计规范》(英文记《iOS Human Interface Guidelines》),迄今已近半载。断断续续,林林总总;终归曙光初现,也算圆满。更幸有梳理归整,章节目录也算清晰,得以纵览全文。奈...
  • 虽然6月13日W  WDC2016的发布会结束了,...本文主要是黑马程序员对iOS 10 中SDK所更新的主要内容进行总结。根据黑马程序员惯例,在文章的最后,有相关相关教学视频及Demo会有分享链接,供各位下载!      1.G
  • IOS系统历届版本大回顾(<iOS7)

    千次阅读 2016-09-24 16:26:42
    APPLE,一种常见的水果,但在人类的进化史上扮演了2次拯救世界的角色。 第一次是在1666年一个夏末的傍晚,在英格兰林肯郡的乌尔斯索普,当一个年轻人坐在树下,埋头读书的时候,一个苹果奋力挣脱了树枝的束缚,撞...
  • 用到的组件1、通过CocoaPods安装项目名称项目信息AFNetworking网络请求组件FMDB本地数据库组件SDWebImage多个缩略图缓存组件UICKeyChainStore存放用户账号密码组件Reachability...iOS 照片浏览控件CTAssetsPicker...
  • 用到的组件 1、通过CocoaPods安装 项目名称 项目信息 AFNetworking 网络请求组件 FMDB 本地数据库组件 SDWebImage 多个缩略图缓存组件 UICKeyChainStore 存放用户账号密码组件 ...监测
  • ios各版本特性

    千次阅读 2012-06-16 23:49:30
    2011年6月6日在美国旧金山的Moscone West会议中心将举行苹果2011年度的WWDC大会(即苹果电脑全球研发者大会)在会上,除了有100场的技术研讨会,以及超过1000名的苹果工程 师会与开发者们面对面的交流。...
  • 关注微信公众号【异步图书】每周送书 Xcode是一款功能全面的应用程序,通过此工具可以轻松输入、编译、调试并执行Objective-C程序。如果想在Mac上快速开发iOS应用...使用Xcode 9打开一个iOS 11项目后的效果如图1-1...
  • iOS-LibraryCollections(Github地址) Objective-C版 持续更新。。。 iOS开发常用三方库、插件、知名博客等等,大家可以一览无余了,期待大家和我们一起共同维护,同时也期望大家随时能提出宝贵的意见。 重点...
  • 关于代码家(干货集中营)共享的所有知识点IOS部分的汇总,后续每周会对其进行更新 iOS [2016年10月12日发布] Cell 弹性效果 [2016年10月12日发布] Xcode 8 快速注释和取消注释插件。 [2016年10月11日发布] 支持下滑...
  • cocos2dx项目复制文字到手机粘贴

    千次阅读 2018-06-13 17:55:25
    有的游戏中会提示添加官方微信或者关注公众号,为了方便玩家操作,就会有一个复制到粘贴板的功能。废话不多说了,直接上代码吧。c++代码如下:void WxApiInterFace::CopyStringToClipBoard(const char* roomIdStr){#...
  • IOS兼容问题(复制到剪贴板)

    千次阅读 2018-11-14 16:30:16
    ),结果发现IOS复制不到剪贴板 我的html结构如下 &lt;div class="form_copy"&gt; &lt;label class="form_copy_item" for=""&gt; &lt;b class="text&...
1 2 3 4 5 ... 20
收藏数 3,674
精华内容 1,469
关键字:

11 ios 粘贴功能改变