찾다
웹 프론트엔드HTML 튜토리얼IOS动画(Core Animation)总结 (参考多方文章)_html/css_WEB-ITnose

一、简介

iOS 动画主要是指Core Animation框架。官方使用文档地址为:Core Animation Guide。
Core Animation是IOS和OS X平台上负责图形渲染与动画的基础框架。Core Animation可以作用与动画视图或者其他可视元素,为你完成了动画所需的大部分绘帧工作。你只需要配置少量的动画参数(如开始点的位置和结束点的位置)即可使用Core Animation的动画效果。Core Animation将大部分实际的绘图任务交给了图形硬件来处理,图形硬件会加速图形渲染的速度。这种自动化的图形加速技术让动画拥有更高的帧率并且显示效果更加平滑,不会加重CPU的负担而影响程序的运行速度。

二、Core Animation类图以及常用字段

Core Animation类的继承关系图

常用属性
duration : 动画的持续时间
beginTime : 动画的开始时间
repeatCount : 动画的重复次数
autoreverses : 执行的动画按照原动画返回执行
timingFunction : 控制动画的显示节奏系统提供五种值选择,分别是:

  • kCAMediaTimingFunctionLinear 线性动画
  • kCAMediaTimingFunctionEaseIn 先慢后快(慢进快出)
  • kCAMediaTimingFunctionEaseOut 先块后慢(快进慢出)
  • kCAMediaTimingFunctionEaseInEaseOut 先慢后快再慢
  • kCAMediaTimingFunctionDefault 默认,也属于中间比较快
  • delegate : 动画代理。能够检测动画的执行和结束。

    <code class="hljs objectivec has-numbering"><span class="hljs-class"><span class="hljs-keyword">@interface</span> <span class="hljs-title">NSObject</span> (<span class="hljs-title">CAAnimationDelegate</span>)</span> - (<span class="hljs-keyword">void</span>)animationDidStart:(CAAnimation *)anim; - (<span class="hljs-keyword">void</span>)animationDidStop:(CAAnimation *)anim finished:(<span class="hljs-built_in">BOOL</span>)flag;<span class="hljs-keyword">@end</span></code>

    path:关键帧动画中的执行路径
    type : 过渡动画的动画类型,系统提供了四种过渡动画。
    - kCATransitionFade 渐变效果
    - kCATransitionMoveIn 进入覆盖效果
    - kCATransitionPush 推出效果
    - kCATransitionReveal 揭露离开效果
    subtype : 过渡动画的动画方向
    - kCATransitionFromRight 从右侧进入
    - kCATransitionFromLeft 从左侧进入
    - kCATransitionFromTop 从顶部进入
    - kCATransitionFromBottom 从底部进入

    三、IOS动画的调用方式

    第一种:UIView 代码块调用

    <code class="hljs avrasm has-numbering">    _demoView<span class="hljs-preprocessor">.frame</span> = CGRectMake(<span class="hljs-number">0</span>, SCREEN_HEIGHT/<span class="hljs-number">2</span>-<span class="hljs-number">50</span>, <span class="hljs-number">50</span>, <span class="hljs-number">50</span>)<span class="hljs-comment">;</span>    [UIView animateWithDuration:<span class="hljs-number">1.0</span>f animations:^{        _demoView<span class="hljs-preprocessor">.frame</span> = CGRectMake(SCREEN_WIDTH, SCREEN_HEIGHT/<span class="hljs-number">2</span>-<span class="hljs-number">50</span>, <span class="hljs-number">50</span>, <span class="hljs-number">50</span>)<span class="hljs-comment">;</span>    } completion:^(BOOL finished) {        _demoView<span class="hljs-preprocessor">.frame</span> = CGRectMake(SCREEN_WIDTH/<span class="hljs-number">2</span>-<span class="hljs-number">25</span>, SCREEN_HEIGHT/<span class="hljs-number">2</span>-<span class="hljs-number">50</span>, <span class="hljs-number">50</span>, <span class="hljs-number">50</span>)<span class="hljs-comment">;</span>    }]<span class="hljs-comment">;</span></code>

    第二种:UIView [begin commit]模式

    _demoView.frame = CGRectMake(0, SCREEN_HEIGHT/2-50, 50, 50);[UIView beginAnimations:nil context:nil];[UIView setAnimationDuration:1.0f];_demoView.frame = CGRectMake(SCREEN_WIDTH, SCREEN_HEIGHT/2-50, 50, 50);[UIView commitAnimations];

    第三种:使用Core Animation中的类

    <code class="hljs avrasm has-numbering">    CABasicAnimation *anima = [CABasicAnimation animationWithKeyPath:@<span class="hljs-string">"position"</span>]<span class="hljs-comment">;</span>    anima<span class="hljs-preprocessor">.fromValue</span> = [NSValue valueWithCGPoint:CGPointMake(<span class="hljs-number">0</span>, SCREEN_HEIGHT/<span class="hljs-number">2</span>-<span class="hljs-number">75</span>)]<span class="hljs-comment">;</span>    anima<span class="hljs-preprocessor">.toValue</span> = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH, SCREEN_HEIGHT/<span class="hljs-number">2</span>-<span class="hljs-number">75</span>)]<span class="hljs-comment">;</span>    anima<span class="hljs-preprocessor">.duration</span> = <span class="hljs-number">1.0</span>f<span class="hljs-comment">;</span>    [_demoView<span class="hljs-preprocessor">.layer</span> addAnimation:anima forKey:@<span class="hljs-string">"positionAnimation"</span>]<span class="hljs-comment">;</span></code>

    四、IOS动画的使用

    4.1:基础动画(CABaseAnimation)

    重要属性
    fromValue
    : keyPath对应的初始值
    toValue : keyPath对应的结束值

    基础动画主要提供了对于CALayer对象中的可变属性进行简单动画的操作。比如:位移、透明度、缩放、旋转、背景色等等。
    效果演示:

    位移动画代码演示:

    <code class="hljs avrasm has-numbering">    //使用CABasicAnimation创建基础动画    CABasicAnimation *anima = [CABasicAnimation animationWithKeyPath:@<span class="hljs-string">"position"</span>]<span class="hljs-comment">;</span>    anima<span class="hljs-preprocessor">.fromValue</span> = [NSValue valueWithCGPoint:CGPointMake(<span class="hljs-number">0</span>, SCREEN_HEIGHT/<span class="hljs-number">2</span>-<span class="hljs-number">75</span>)]<span class="hljs-comment">;</span>    anima<span class="hljs-preprocessor">.toValue</span> = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH, SCREEN_HEIGHT/<span class="hljs-number">2</span>-<span class="hljs-number">75</span>)]<span class="hljs-comment">;</span>    anima<span class="hljs-preprocessor">.duration</span> = <span class="hljs-number">1.0</span>f<span class="hljs-comment">;</span>    //anima<span class="hljs-preprocessor">.fillMode</span> = kCAFillModeForwards<span class="hljs-comment">;</span>    //anima<span class="hljs-preprocessor">.removedOnCompletion</span> = NO<span class="hljs-comment">;</span>    [_demoView<span class="hljs-preprocessor">.layer</span> addAnimation:anima forKey:@<span class="hljs-string">"positionAnimation"</span>]<span class="hljs-comment">;</span></code>

    注意点
    如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态。但在实质上,图层的属性值还是动画执行前的初始值,并没有真正被改变。

    4.2:关键帧动画(CAKeyframeAnimation)

    CAKeyframeAnimation和CABaseAnimation都属于CAPropertyAnimatin的子类。CABaseAnimation只能从一个数值(fromValue)变换成另一个数值(toValue),而CAKeyframeAnimation则会使用一个NSArray保存一组关键帧。
    重要属性
    values
    : 就是上述的NSArray对象。里面的元素称为”关键帧”(keyframe)。动画对象会在指定的时间(duration)内,依次显示values数组中的每一个关键帧
    path : 可以设置一个CGPathRef\CGMutablePathRef,让层跟着路径移动。path只对CALayer的anchorPoint和position起作用。如果你设置了path,那么values将被忽略。
    keyTimes : 可以为对应的关键帧指定对应的时间点,其取值范围为0到1.0,keyTimes中的每一个时间值都对应values中的每一帧.当keyTimes没有设置的时候,各个关键帧的时间是平分的。

    效果演示:

    圆形路径动画代码演示:

    <code class="hljs avrasm has-numbering">    CAKeyframeAnimation *anima = [CAKeyframeAnimation animationWithKeyPath:@<span class="hljs-string">"position"</span>]<span class="hljs-comment">;</span>    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(SCREEN_WIDTH/<span class="hljs-number">2</span>-<span class="hljs-number">100</span>, SCREEN_HEIGHT/<span class="hljs-number">2</span>-<span class="hljs-number">100</span>, <span class="hljs-number">200</span>, <span class="hljs-number">200</span>)]<span class="hljs-comment">;</span>    anima<span class="hljs-preprocessor">.path</span> = path<span class="hljs-preprocessor">.CGPath</span><span class="hljs-comment">;</span>    anima<span class="hljs-preprocessor">.duration</span> = <span class="hljs-number">2.0</span>f<span class="hljs-comment">;</span>    [_demoView<span class="hljs-preprocessor">.layer</span> addAnimation:anima forKey:@<span class="hljs-string">"pathAnimation"</span>]<span class="hljs-comment">;</span></code>

    说明:CABasicAnimation可看做是最多只有2个关键帧的CAKeyframeAnimation

    4.3:组动画(CAAnimationGroup)

    CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行。
    重要属性
    animations
    : 用来保存一组动画对象的NSArray
    效果演示:

    组动画代码演示:

    <code class="hljs perl has-numbering">    CAKeyframeAnimation <span class="hljs-variable">*anima1</span> = [CAKeyframeAnimation animationWithKeyPath:<span class="hljs-variable">@"</span>position<span class="hljs-string">"];    NSValue <span class="hljs-variable">*value0</span> = [NSValue valueWithCGPoint:CGPointMake(0, SCREEN_HEIGHT/2-50)];    NSValue <span class="hljs-variable">*value1</span> = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH/3, SCREEN_HEIGHT/2-50)];    NSValue <span class="hljs-variable">*value2</span> = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH/3, SCREEN_HEIGHT/2+50)];    NSValue <span class="hljs-variable">*value3</span> = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH<span class="hljs-variable">*2</span>/3, SCREEN_HEIGHT/2+50)];    NSValue <span class="hljs-variable">*value4</span> = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH<span class="hljs-variable">*2</span>/3, SCREEN_HEIGHT/2-50)];    NSValue <span class="hljs-variable">*value5</span> = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH, SCREEN_HEIGHT/2-50)];    anima1.values = [NSArray arrayWithObjects:value0,value1,value2,value3,value4,value5, nil];    //缩放动画    CABasicAnimation <span class="hljs-variable">*anima2</span> = [CABasicAnimation animationWithKeyPath:<span class="hljs-variable">@"</span>transform.scale"</span>];    anima2.fromValue = [NSNumber numberWithFloat:<span class="hljs-number">0</span>.<span class="hljs-number">8</span>f];    anima2.toValue = [NSNumber numberWithFloat:<span class="hljs-number">2.0</span>f];    <span class="hljs-regexp">//</span>旋转动画    CABasicAnimation <span class="hljs-variable">*anima3</span> = [CABasicAnimation animationWithKeyPath:<span class="hljs-variable">@"</span>transform.rotation<span class="hljs-string">"];    anima3.toValue = [NSNumber numberWithFloat:M_PI<span class="hljs-variable">*4</span>];    //组动画    CAAnimationGroup <span class="hljs-variable">*groupAnimation</span> = [CAAnimationGroup animation];    groupAnimation.animations = [NSArray arrayWithObjects:anima1,anima2,anima3, nil];    groupAnimation.duration = 4.0f;    [_demoView.layer addAnimation:groupAnimation forKey:<span class="hljs-variable">@"</span>groupAnimation"</span>];</code>

    4.4:过渡动画(CATransition)

    CAAnimation的子类,用于做过渡动画或者转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。
    重要属性
    type
    :动画过渡类型

    Apple 官方的SDK其实只提供了四种过渡效果。
    - kCATransitionFade 渐变效果
    - kCATransitionMoveIn 进入覆盖效果
    - kCATransitionPush 推出效果
    - kCATransitionReveal 揭露离开效果
    私有API提供了其他很多非常炫的过渡动画,比如@”cube”、@”suckEffect”、@”oglFlip”、 @”rippleEffect”、@”pageCurl”、@”pageUnCurl”、@”cameraIrisHollowOpen”、@”cameraIrisHollowClose”等。
    注意点
    私有api,不建议开发者们使用。因为苹果公司不提供维护,并且有可能造成你的app审核不通过。

    subtype:动画过渡方向

  • kCATransitionFromRight 从右侧进入
  • kCATransitionFromLeft 从左侧进入
  • kCATransitionFromTop 从顶部进入
  • kCATransitionFromBottom 从底部进入
  • startProgress:动画起点(在整体动画的百分比)
    endProgress:动画终点(在整体动画的百分比)

    效果演示:

    4.5:综合案例

    4.5.1 : 仿Path菜单效果

    效果演示:

    动画解析:
    1、点击红色按钮,红色按钮旋转。(旋转动画)
    2、黑色小按钮依次弹出,并且带有旋转效果。(位移动画、旋转动画、组动画)
    3、点击黑色小按钮,其他按钮消失,被点击的黑色按钮变大变淡消失。(缩放动画、alpha动画、组动画)
    博主的话:代码过多,这里不做演示。文章最后提供代码下载地址。

    4.5.2: 仿钉钉菜单效果

    效果演示:

    看上去挺炫的,其实实现很简单,就是位移动画+缩放动画。

    4.5.3: 点赞烟花效果动画

    效果演示:


    这里其实只有按钮变大效果使用的缩放动画。烟花效果 使用的是一种比较特殊的动画–粒子动画。
    一个粒子系统一般有两部分组成:
    1、CAEmitterCell:可以看作是单个粒子的原型(例如,一个单一的粉扑在一团烟雾)。当散发出一个粒子,UIKit根据这个发射粒子和定义的基础上创建一个随机粒子。此原型包括一些属性来控制粒子的图片,颜色,方向,运动,缩放比例和生命周期。
    2、CAEmitterLayer:主要控制发射源的位置、尺寸、发射模式、发射源的形状等等。
    以上两个类的属性还是比较多的,这里就不细讲了。大家可以google一下,详细的了解吧。

    五、总结

    任何复杂的动画其实都是由一个个简单的动画组装而成的,只要我们善于分解和组装,我们就能实现出满意的效果。动画其实也不是那么难。

    六、下载地址

    github下载地址:https://github.com/yixiangboy/IOSAnimationDemo
    github:https://github.com/yixiangboy


    iOS动画效果与上文相互结合:

    理论 UIview VS UIlayer

    UIView只是CALyer之上的封装,更准确的来说,UIView是CALyer的简版封装,加上事件处理的集合类。 CALayer是QuartzCore库内的类,是iOS上最基本的绘制单元。其次,我们知道iOS平台的Cocoa Touch 是源于OS X平台的Cocoa),是在Cocoa的基础上添加了适用于移动手机设备的手势识别、动画等特性;但从底层实现上来说,Cocoa Touch与Cocoa共用一套底层的库,其中就包括了QuartCore.framework;但QuartCore.framework一开始就是为OS X设计的,所以其中有部分特性是不适合做移动设备开发的,比如最重要的坐标系统。因此,我们也就不难理解为何UIView/NSView在CALayer上做了一层封装。

    基于UIView实现的动画

    简单的Block动画

    UIView

    弹性动画

    关键帧动画(中间可以添加合适多的帧来做不同的衔接动画)

    CALayer动画

    常用属性 

    duration : 动画的持续时间

    beginTime : 动画的开始时间 

    repeatCount : 动画的重复次数 

    autoreverses : 执行的动画按照原动画返回执行 

    timingFunction : 控制动画的显示节奏,系统提供五种值选择, 分别是 

  • kCAMediaTimingFunctionLinear 线性动画

  • kCAMediaTimingFunctionEaseIn 先慢后快(慢进快出)

  • kCAMediaTimingFunctionEaseOut 先块后慢(快进慢出)

  • kCAMediaTimingFunctionEaseInEaseOut 先慢后快再慢

  • kCAMediaTimingFunctionDefault 默认,也属于中间比较快

  • path:关键帧动画中的执行路径 

    type:过渡动画的动画类型,系统提供了四种过渡动画:

  • kCATransitionFade 渐变效果

  • kCATransitionMoveIn 进入覆盖效果

  • kCATransitionPush 推出效果

  • kCATransitionReveal 揭露离开效果

  • subtype : 过渡动画的动画方向

  • kCATransitionFromRight 从右侧进入

  • kCATransitionFromLeft 从左侧进入 

  • kCATransitionFromTop 从顶部进入 

  • kCATransitionFromBottom 从底部进入

  • 基础动画主要提供了对于CALayer对象中的可变属性进行简单动画的操作。比如:位移、透明度、缩放、旋转、背景色等等。 重要属性 fromValue : keyPath对应的初始值 toValue : keyPath对应的结束值。

  • 基础动画(CABaseAnimation) 0:1 1:0 实现下拉剪头的展开和收起

  • 关键帧动画(CAKeyframeAnimation) CAKeyframeAnimation和CABaseAnimation都属于CAPropertyAnimatin的子类。CABaseAnimation只能从一个数值(fromValue)变换成另一个数值(toValue),而CAKeyframeAnimation则会使用一个NSArray保存一组关键帧。 重要属性 values : 就是上述的NSArray对象。里面的元素称为”关键帧”(keyframe)。动画对象会在指定的时间(duration)内,依次显示values数组中的每一个关键帧 path : 可以设置一个CGPathRefCGMutablePathRef,让层跟着路径移动。path只对CALayer的anchorPoint和position起作用。如果你设置了path,那么values将被忽略。 keyTimes : 可以为对应的关键帧指定对应的时间点,其取值范围为0到1.0,keyTimes中的每一个时间值都对应values中的每一帧.当keyTimes没有设置的时候,各个关键帧的时间是平分的。

  • 组合动画:

  • 过渡动画(CATransition) 多数为私有的API使用后无法上架app。 私有API提供了其他很多非常炫的过渡动画,比如@”cube”、@”suckEffect”、@”oglFlip”、 @”rippleEffect”、@”pageCurl”、@”pageUnCurl”、@”cameraIrisHollowOpen”、@”cameraIrisHollowClose”等。

  • 粒子动画

    transform动画

    transform是一个非常重要的属性,它在矩阵变换的层面上改变视图的显示效果,完成旋转、形变、平移等等操作。在它被修改的同时,视图的frame也会被真实改变。有两个数据类型用来表示transform,分别是CGAffineTransform和CATransform3D。前者作用于UIView,后者为layer层次的变换类型。基于后者可以实现更加强大的功能。 对于想要了解矩阵变换是如何作用实现的,可以参考这篇博客:CGAffineTransform 放射变换

    在开始使用transform实现你的动画之前,我先介绍几个常用的函数:

    transform严格的说不是一种动画,而是动画中的一部分操作,我拿出来说是因为它同时出现在了UIView 动画和CALayer动画中。

    一些应用

    利用上面CALayer 基础动画的代码实现下拉剪头的展开和收起,还可以实现时钟指针的旋转

    输入框在输入错误信息时的摇晃效果。

    利用CAShapeLayer 和CABasicAnimation 可以实现加载动画。

    iOS渲染视图的层级图: 


    성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    텍스트에서 웹 사이트로 : HTML의 힘텍스트에서 웹 사이트로 : HTML의 힘Apr 13, 2025 am 12:07 AM

    HTML은 웹 페이지를 작성하는 데 사용되는 언어로, 태그 및 속성을 통해 웹 페이지 구조 및 컨텐츠를 정의합니다. 1) HTML과 같은 태그를 통해 문서 구조를 구성합니다. 2) 브라우저는 HTML을 구문 분석하여 DOM을 빌드하고 웹 페이지를 렌더링합니다. 3) 멀티미디어 기능을 향상시키는 HTML5의 새로운 기능. 4) 일반적인 오류에는 탈수 된 레이블과 인용되지 않은 속성 값이 포함됩니다. 5) 최적화 제안에는 시맨틱 태그 사용 및 파일 크기 감소가 포함됩니다.

    HTML, CSS 및 JavaScript 이해 : 초보자 안내서HTML, CSS 및 JavaScript 이해 : 초보자 안내서Apr 12, 2025 am 12:02 AM

    WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

    HTML의 역할 : 웹 컨텐츠 구조HTML의 역할 : 웹 컨텐츠 구조Apr 11, 2025 am 12:12 AM

    HTML의 역할은 태그 및 속성을 통해 웹 페이지의 구조와 내용을 정의하는 것입니다. 1. HTML은 읽기 쉽고 이해하기 쉽게하는 태그를 통해 컨텐츠를 구성합니다. 2. 접근성 및 SEO와 같은 시맨틱 태그 등을 사용하십시오. 3. HTML 코드를 최적화하면 웹 페이지로드 속도 및 사용자 경험이 향상 될 수 있습니다.

    HTML 및 코드 : 용어를 자세히 살펴 봅니다HTML 및 코드 : 용어를 자세히 살펴 봅니다Apr 10, 2025 am 09:28 AM

    "Code"는 "Code"BroadlyIncludeLugageslikeJavaScriptandPyThonforFunctureS (htMlisAspecificTypeofCodeFocudecturecturingWebContent)

    HTML, CSS 및 JavaScript : 웹 개발자를위한 필수 도구HTML, CSS 및 JavaScript : 웹 개발자를위한 필수 도구Apr 09, 2025 am 12:12 AM

    HTML, CSS 및 JavaScript는 웹 개발의 세 가지 기둥입니다. 1. HTML은 웹 페이지 구조를 정의하고 등과 같은 태그를 사용합니다. 2. CSS는 색상, 글꼴 크기 등과 같은 선택기 및 속성을 사용하여 웹 페이지 스타일을 제어합니다.

    HTML, CSS 및 JavaScript의 역할 : 핵심 책임HTML, CSS 및 JavaScript의 역할 : 핵심 책임Apr 08, 2025 pm 07:05 PM

    HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

    HTML은 초보자를 위해 쉽게 배우나요?HTML은 초보자를 위해 쉽게 배우나요?Apr 07, 2025 am 12:11 AM

    HTML은 간단하고 배우기 쉽고 결과를 빠르게 볼 수 있기 때문에 초보자에게 적합합니다. 1) HTML의 학습 곡선은 매끄럽고 시작하기 쉽습니다. 2) 기본 태그를 마스터하여 웹 페이지를 만들기 시작하십시오. 3) 유연성이 높고 CSS 및 JavaScript와 함께 사용할 수 있습니다. 4) 풍부한 학습 리소스와 현대 도구는 학습 과정을 지원합니다.

    HTML의 시작 태그의 예는 무엇입니까?HTML의 시작 태그의 예는 무엇입니까?Apr 06, 2025 am 12:04 AM

    anexampleStartingtaginhtmlis, whithbeginsaparagraph.startingtagsareessentialinhtmlastheyinitiate rements, definetheirtypes, andarecrucialforstructurituringwebpages 및 smanstlingthedom.

    See all articles

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    AI Hentai Generator

    AI Hentai Generator

    AI Hentai를 무료로 생성하십시오.

    인기 기사

    R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
    3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. 최고의 그래픽 설정
    3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
    3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
    4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

    뜨거운 도구

    VSCode Windows 64비트 다운로드

    VSCode Windows 64비트 다운로드

    Microsoft에서 출시한 강력한 무료 IDE 편집기

    SublimeText3 Linux 새 버전

    SublimeText3 Linux 새 버전

    SublimeText3 Linux 최신 버전

    ZendStudio 13.5.1 맥

    ZendStudio 13.5.1 맥

    강력한 PHP 통합 개발 환경

    SublimeText3 영어 버전

    SublimeText3 영어 버전

    권장 사항: Win 버전, 코드 프롬프트 지원!

    Atom Editor Mac 버전 다운로드

    Atom Editor Mac 버전 다운로드

    가장 인기 있는 오픈 소스 편집기