首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS基础开发实践:iMessage Extension浅析

从开发角度主要分为两类: 1、Sticker Pack App/Extension; 2、iMessage App/Extension; 创建一个Sticker Pack App,实际上是创建了一个空App...加上一个Sticker Pack Extension;创建一个iMessage App,和Sticker Pack App一样,一个空App加上Extension;除了创建时选择不一样:   ?...建议: 1、必须提供@3x的贴纸图片;系统会在运行时,自动将表情按比例缩小到@2x或@1x来使用; 2、为了显示质量和显示效果,建议提供同时提供@1x和@2x的图片; 3、单个贴纸最大文件大小500KB...          MSSticker 贴纸数据,用于发送或者显示 3)、MSConversation:用于发送iMessage的消息;MSMessagesAppViewController有属性指向...如图所示,当你创建一个iMessage Extension的工程时;系统会自动创建一个MSMessagesAppViewController。

2.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS10中Messages独立应用与扩展插件详析

    关于导入的图片,有如下几条规则: 1.图片文件的格式必须是PNG、APNG、GIF或者JPEG。 2.单个文件的大小不能超过500KB。...,实际上如果要通过代码来开发表情包也是没有问题的,这里需要用到的一个类就是MSSticker类,简单理解,MSSticker类对象就是一个表情贴图,但是它不是一个View视图,若想在Messages App...首先,MSSticker类创建方法如下: //初始化方法 通过文件URL 来创建实例 - (nullable instancetype)initWithContentsOfFileURL:(NSURL...,这个类可以更加简单方面的创建表情包视图控制器。...MSStickerBrowserView是用于展示表情视图的容器,其继承自UIView,但却和UICollectionView十分类似,其中方法解析如下: //初始化方法 设置frame 和其中表情视图的尺寸模式

    1.1K10

    开始一步一步学习Message App Extension

    开始一步一步学习Message App Extension 可以支持发送的类型 文本 贴纸(表情包) 视频文件 交互式的消息 扩展支持两种类型 贴纸(表情包) iMessage的app 这两种类型可以通过独立的应用和扩展创建...之后 -> 下载地址 创建Motion的工程 下载模板工程 启动Motion软件 创建新的Motion工程 File->New 选择Motion Project 在右边可选项 Preset->Custom...iMessage Apps 在用户插入一个Message App可以参考MSMessageAppViewController 创建一个自定义或者动态的贴纸浏览框可以参考MSStickerBrowserViewController...插入文本 贴纸 视频文件到Message App 输入框查看 MSConversation 创建带有特定的应用数据交互的消息 查看MSMessage 更新交互式信息(例如,创建游戏或应用程序协作...MSMessagesAppPresentationStyleExpanded 设置界面的大小和iMessage的界面大小 Demo的下载地址

    42830

    客户端骨架屏详解

    iOS iOS实现Skeleton效果的第三方库有很多,当然也可以自己创建一个,而骨架屏最核心的就是占位和属性动画。...调用showSkeleton方法,对属性skeletonable为true的视图进行遍历,找到其最上层的、skeletonable为true的子View,然后创建skeletonLayer添加到上面,构成骨架图...缺点是有的控件是自适应大小,在未获得数据之前,控件位置是错误的,导致占位效果有问题。...Somo 同样是扩展UIView,添加属性somoContainer,表示占位视图的容器视图,其中每个占位区域都是一个SomoView。...特点 避免了上述自适应控件无数据时大小不正确的问题。 需要手工指定每个占位区域,且每个占位区域是UIView级别,不是CALayer。

    4.1K10

    【IOS开发基础系列】UIView专题

    这个只发生在接收者从它的父视图上移除或者接收者添加到父视图中而不是添加到window中。...    接收者首选的尺寸 返回值     一个新的大小用来适应接收者子视图 讨论     默认的实现返回大小参数 子类重写这个方法用来返回特定视图的大小。...举个粒子,UISwitch返回一个修正过的大小,UIImageView返回图片的大小 这个方法并没有改变接收者的大小 sizeToFit     调整大小并移动接收者视图大小所以他包含了他的子视图 -...消息或者子视图从接收者视图层次中移除因为它要被添加到其他视图了 3 UIView动画 3.1 概述         UIView视图的动画功能,可以使在更新或切换视图时有放缓节奏、产生流畅的动画效果,进而改善用户体验...UIView可以产生动画效果的变化包括:     • 位置变化:在屏幕上移动视图。     • 大小变化:改变视图框架(frame)和边界。     • 拉伸变化:改变视图内容的延展区域。

    70530

    iOS 系统中的视图动画

    iOS 系统中的视图动画 动画为用户界面的状态转换提供了流畅的可视化效果, 在 iOS 中大量使用了动画效果, 包括改变视图位置、 大小、 从可视化树中删除视图, 隐藏视图等。...哪些属性可以添加动画效果 根据 iOS 视图编程指南中说明, UIView 内置支持为下列属性添加动画效果: Frame 可以改变视图相对于上一级视图的位置和大小。...(如果视图已经经过了缩放、 旋转、平移之类的变换, 则需要修改 Center 和 Bounds 属性) Bounds 改变视图大小。 Center 改变视图相对于上级视图的位置。...实现动画的自动翻转 当创建自动翻转指定次数的动画时, 考虑将重复次数设置为非整数值。...创建视图切换动画 视图切换动画可以减少修改可视化树时引起的界面上的突变, iOS 系统中大量使用了视图切换动画, 视图切换动画主要有下面两种场景: 修改子视图 替换子视图 注意: 不要把视图切换和视图控制器的切换混淆

    2.2K30

    UIview

    一些可以动画视图声明的属性的新值。 布局和子视图管理 一个视图可以包含零个或更多的子视图。 每个视图定义了自己的默认的调整行为与它的父视图。 一个视图可以定义子视图的大小和位置。...框架定义了视图的起源和维度的坐标系统中常用它的父视图和布局调整视图的大小或位置。中心属性可以用来调整视图的位置不改变它的大小。边界定义视图,把他们的内部维度和几乎完全用于自定义代码。...的尺寸部分框架和边界矩形耦合在一起,因此改变大小的矩形更新的大小。如何使用UIView类的详细信息,看到视图iOS编程指南。...这将创建一个静态视图的可视化表示的内容可以显示在屏幕上。当视图的实际内容发生变化时,你有责任通知系统视图需要重绘。...因此,你应该叫UIView类的方法从代码中运行您的应用程序的主线程。这可能不是严格必需是唯一一次在创建视图对象本身,而是所有其他操作应该发生在主线程。

    71710

    iOS学习——UIView的研究

    下面主要通过学习UIView.h文件来了解UIView主要提供了那些方法和属性,从UIView.h的源码来看,UIView.h的结构主要分为4个部分: 常用枚举类型的定义,主要包括 视图动画曲线 UIViewAnimationCurve...,比喻第一视图、基线视图、视图大小等等 视图约束适应尺寸相关的扩展 UIView (UIConstraintBasedLayoutFittingSize),主要用于获取持有约束的视图大小及其区域内的视图大小...)convertRect:(CGRect)rect toView:(nullable UIView *)view; 219 /** 将rect从view中转换到当前视图中,返回在当前视图中的rect *...; 226 227 /** 返回“最佳”大小适合给定的大小 */ 228 - (CGSize)sizeThatFits:(CGSize)size; 229 /** 调整为刚好合适子视图大小 */ 230...的关键帧动画 */ 422 @interface UIView (UIViewKeyframeAnimations) 423 424 /** 创建一个动画块对象,可用于为当前视图设置基于关键帧的动画

    2.8K80

    IOS开发系列——UIView专题之二:动画篇【整理,部分原创】

    2UIView动画 2.1概述 UIView视图的动画功能,可以使在更新或切换视图时有放缓节奏、产生流畅的动画效果,进而改善用户体验。...UIView可以产生动画效果的变化包括: •位置变化:在屏幕上移动视图。 •大小变化:改变视图框架(frame)和边界。 •拉伸变化:改变视图内容的延展区域。...UIKit直接将动画集成到UIView类中,实现简单动画的创建过程。UIView类定义了几个内在支持动画的属性声明,当这些属性发生改变时,视图为其变化过程提供内建的动画支持。...+ (Class)layerClass 返回值 一个用来创建视图layer的类 讨论 重写子类来指定一个自定义类用来显示。当在创建视图layer时候调用。默认的值是CALayer类对象。...cache 如果是YES,那么在开始和结束图片视图渲染一次并在动画中创建帧;否则,视图将会在每一帧都渲染。例如缓存,你不需要在视图转变中不停的更新,你只需要等到转换完成再去更新视图。

    1.5K10

    简单放置一张图片,实现放大缩小旋转效果1 image和imageView的区别2 创建控件显示到view上的标准步骤3 CGRectOffset函数的含义4 小飞机-监听四个按钮的点击事件(代码)5

    1 image和imageView的区别 image是图片(照片). imageView是放图片的控件(相框). 2 创建控件显示到view上的标准步骤 创建对象. 设置内容....如果在A方法中需要使用B方法中创建的某个对象或变量,如果拿不到,那么就应该定义一个全局的属性,把B方法中创建完成的对象赋值给全局属性. 6 通过center修改位置 center只能用来修改位置 center...是CGPoint类型,是当前控件中心点到父控件“父视图”的左上角 7 通过frame修改大小 通过frame修改大小时左上角原点不动 8 通过bounds修改大小 bounds 和 frame 都是CGRect...的类型 bounds 默认的原点是 0,0 通过bounds修改大小时中心点不动 小结: center只能修改位置,bounds只能修改大小,frame既能修改位置也能修改大小* 9 transform...如何获取当前视图的所有子视图? subviews. isKindOfClass 和 isMemberOfClass 的区别?

    1.1K30

    iOS UI控件了解一下

    创建view的步骤如下: ①开辟空间并初始化视图(初始化时,给出视图位置和大小) ②对视图做一些设置(比如:背景颜色) ③将视图添加到window上进行显示 ④释放视图对象 视图创建代码: UIView...UIView的属性frame、bounds、center 1)frame:描述当前视图在其父视图中的位置和大小; frame是一个结构体,包含2部分内容:origin和size。...当一个view设置bounds时,会把自己当成一个容器,定义自己的边界大小以及左上角的初始坐标。当子视图添加到此视图时,会根据bounds指定的原点(0,0)计算frame,而非左上角。...UIView的操作方法 1)添加视图 UIView的addSubview:方法可以添加子视图,对于同一个视图的所有子视图来讲,后添加的子视图会把已加的子视图盖在下面。...创建UIButton与创建UILabel、UITextField、UIView的步骤很相似。

    2.6K20

    最新iOS设计规范十|5大拓展程序(Extensions)

    二、文件提供(Document Providers) “文件提供”扩展程序实现了一个有着自定义界面的,并且可以从系统上的其他APP中进行文档的导入、导出以及移动的扩展功能。...iMessage应用程序 iMessage应用程序可在Messages对话的上下文中提供交互式体验。iMessage应用程序使人们可以共享数据和媒体,在共享任务上进行协作以及彼此玩游戏。 ?...贴纸尺寸 消息支持三种不干胶标签大小,它们显示在基于网格的浏览器中。选择最适合您的内容的尺寸,并准备该尺寸的所有贴纸。 ? 适当缩放贴纸。...iMessage应用程序和贴纸包图标 像iOS应用一样,iMessage应用和贴纸包也需要可识别的应用图标。保持背景简单,并提供单个焦点。设计一个带有单个中心点的图标,一目了然。...模板图像使用遮罩创建图标。使用具有适当透明度和抗锯齿的黑色和白色,并且不要包含阴影。模板图片应居中放置在大约70px×70px的区域中。

    3.2K10

    CALayer的寄宿图

    一个视图就是在屏幕上显示的一个矩阵块(比如图片、文字或者视频),它能够拦截点击以及触摸手势等用户输入。视图在层级关系中可以相互嵌套,一个视图可以管理他的所有所有子视图的位置。...在iOS当中,所有的视图都是从一个叫做UIView的基类派生而来,UIView可以处理触摸事件,支持基于CoreGraphics的绘图,可以做仿射变换(例如旋转或缩放),或者简单的滑动以及渐变动画。...它用来判断在绘制图层的时候应该为寄宿图创建的空间的大小,和需要显示的图片的拉伸度(假设没有设置contentsGravity属性)。...当图片大小超过了视图的边界时,默认情况下,UIView会绘制超过边界的内容或者子视图,在CALayer下也是这样的。...创建4个UIView,通过这4个view的frame来设置拼合图的位置 像平常一样载入大图,然后把它赋值给四个独立图层的contents,然后设置每个图层的contentsRect来去掉我们不想显示的部分

    1K20

    图层树和寄宿图 -- iOS Core Animation 系列一

    视图在层级关系中可以互相嵌套,一个视图可以管理它的所有子视图的位置。 在iOS中,所有的视图都是从UIView这个基类派生出来的。...1.3 平行的层级关系 每个UIView都对应着一个CALayer,视图的职责是创建并管理这个图层,以确保党子视图在层级关系中添加或者被移除的时候,他们对应的图层也同样的在对应的层级关系树中有相同的操作...2.1.3 contentsScale contentsScale属性定义了寄宿图的像素尺寸和视图大小的比例,默认情况下是一个1.0的浮点数。...contentsScale其实属于支持高分辨率屏幕机制的一部分,是用来判断在绘制图层的时候应该为寄宿图创建的空间大小,和需要显示的图片拉伸度(假设没有设置contentsGravity)。...如果UIView检测到-drawRect:被调用,会自动给视图分配一个寄宿图。这个寄宿图的像素尺寸等于视图大小乘以contentsScale。

    1.2K20

    iOS14开发-入门知识

    Cocoa Touch 层为应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,它负责用户在 iOS 设备上的触摸交互操作以及一些其他的关键功能。 创建第一个iOS项目 ?...UIView与UIViewController 初步印象 iOS 开发中,一个界面就是一个 UIViewController(视图控制器),界面上显示的内容就是 UIView(视图)。...UIView iOS坐标系 二维坐标系 ? 坐标系.png z轴 获取屏幕大小 UIScreen.main.bounds UIView添加到UIViewController的View ?...UIView常见属性 backgroudColor:背景色。 frame:相对父视图的坐标和大小。 bounds:相对自身的坐标和大小,所以 bounds 的 x 和 y 永远为0。...exchangeSubviewAtIndex:将2个位置的视图互换。 演示UIView与UIViewController Storyboard 注意左侧面板的视图层次结构。

    2.9K40

    iOS点击TableView的cell显示弹出动画

    ) UIView *bgView;// 阴影视图 @property (nonatomic, strong) BookListCellView *selectedCell;// 选中的cell 这个声明要做成整个视图控制器可调用的...,背景的阴影视图是固定大小的,即使覆盖整个界面,cell视图和纯白视图要根据点击的位置决定,所以阴影视图可以直接写一个方法来创建: // 阴影视图 - (UIView *)bgView { if...animateWithDuration:0.3 animations:^{ // 稍微增加cell视图的大小 self.selectedCell.transform =...,我们来拆分一下,整个动画分为三个过程: 第一个过程是加阴影,新创建一个对应的cell显示出来,在动画中稍微增大cell凸显效果,同时有一个纯白视图慢慢覆盖cell视图; 第二个过程是炸开纯白视图,在动画中将其的大小设为整个屏幕大小...动画是使用的最基本的UIView动画,教程可以看我这篇博客,使用起来还是很方便的,延迟执行我用的GCD的方法,也可以用别的你熟悉的方式。

    1.5K10

    iOS开发系列——纯代码实现iOS开发

    新建的视图控制器默认情况下是无法加载到程序运行界面上的,此时需要在应用程序代理的程序加载完毕事件中手动加载并显示我们的视图。...; } } @end 运行效果如下,与之前使用storyboard创建的界面类似,同时也能点击登录: a1.png UIView 在这里我们需要对上面的代码一样解释,在弄清上面的代码之前我们不得不熟悉一个...UIKit中最重要的类UIView。...UIView就是指界面可见的控件元素,所有的控件最终都继承自UIView,UIView中还可以添加其他UIView(通过addSubView方法); 在一个iOS应用中必须有一个主窗口UIWindow(...当主窗口设置为可见过程中会调用视图控制器的loadView方法来加载视图(注意视图控制器的loadView方法是延迟加载的,第一次调用视图控制器的view属性才会调用此方法;由于makeKeyAndVisible

    3.6K60

    【IOS开发进阶系列】动画专题

    每一个UIview都有一个CALayer实例的图层属性,也就是所谓的backing layer,视图的职责就是创建并管理这个图层,以确保当子视图在层级关系中添加或者被移除的时候,他们关联的图层也同样对应在层级关系树当中有相同的操作...其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层 @...如果UIView检测到-drawRect: 方法被调用了,它就会为视图分配一个寄宿图,这个寄宿图的像素尺寸等于视图大小乘以 contentsScale的值。        ...而且由于CALayer不支持自动缩放和自动布局,子视图并不是主动跟踪视图边界的大小,所以每次视图大小被更改,我们不得不手动更新子图层的边界。        ...就像我们在第一章『图层树』讨论的一样,每一个UIView都是寄宿在一个CALayer的示例上。这个图层是由视图自动创建和管理的,那我们可以用别的图层类型替代它么?一旦被创建,我们就无法代替这个图层了。

    56810

    iOS 页面渲染 - UIView & CALayer

    动画 基本上你改变一个单独的 layer 的任何属性的时候,都会触发一个从旧的值过渡到新值的简单动画,这就是所谓的隐式动画,其时长为 0.25s。...iOS 中将该缓存区保存的图片称为 寄宿图。而当设备屏幕进行刷新时,会从 CALayer 中读取生成的 bitmap, 进而呈现到屏幕上。...系统绘制流程 系统绘制流程 上图本质就是创建一个 backing storage 的流程,归纳一下: 系统绘制时, 会先创建 backing storage(CGContextRef),我们可以理解为...,size (CGSize 类型) 为矩形的尺寸; 上节我们已经说到 UIView 的视图属性其实本质上就是对其持有的 CALayer 属性的封装而已,下面为几个视图属性的对应关系。...frame:表示视图在父视图中显示出来的位置和大小,CGReact 类型,其显示位置是相对父视图坐标系而言的; bounds:表示视图相对于自身显示出来的位置与大小,CGReact 类型,其显示位置是相对自身视图坐标系而言的

    1.9K20
    领券