この記事では、2 つの読み込みアニメーションを通して CALayer アニメーションを紹介します。オブジェクト指向の考え方によれば、Layer は実際にはモデル クラスであり、Java の POJO クラスと同様に、いくつかの属性が含まれており、これらの属性が Layer に表示されるコンテンツに影響を与えるメソッドはありません。まず、UIView と CALayer の違いと関係を見てみましょう。
連絡先: レイヤーはビューの後ろにいる女性です。各 UIView の背後には、対応する CALayer があります。UIView に表示されるコンテンツは、実際には CALayer 内にあります。
の違い:
View には、さまざまな組み合わせによる複雑なレイアウト メカニズムがあります。レイヤーは非常にシンプルなレイアウトのみです。
View はユーザーの操作に応答できます。レイヤーはユーザーの操作に応答できません。
View の描画ロジックは CPU によって実行されます。 Layer でのペイントは GPU によって直接実行されます。
View には豊富で強力なサブクラスがあります。 Layer にはサブクラスがいくつかしかありません。
View にはアニメーション属性が少なく、制限が増えています。 Layer は下位レベルであり、より多くのアニメーション属性を持っているため、より柔軟で豊かなアニメーションを実現できます。
初めての CALayer アニメーション
レイヤーアニメーションシリーズの記事では、簡単な知識から複雑な知識まで体系的な説明は用意しません。サンプルで使用される知識のポイントについて、さまざまな実践例を使用して説明します。
最初のアニメーションでは、Google Chrome ブラウザーの読み込み時にタブに待機アニメーションを実装しましょう:
新しいプロジェクト GoogleLoading、Main.storyboard を開き、UIView を ViewController にドラッグし、制約を追加し、 ViewController と UIView の背景色を自分で設定します。 ここでは、UIView の背景色を無色に設定します。
次に、ViewController に View の Outlet を追加します。この UIView は、読み込みアニメーションを表示する View です。 cpp]
plaincopy を表示@IBOutletweak varloadingView: UIView!
[cpp]
plain copy を表示let ovalShapeLayer: CAShapeLayer = CAShapeLayer()
- ストローク開始: ストロークの開始位置。
- ストロークEnd: ストロークの終了位置。
- fillColor: グラフィックの塗りつぶしの色。
- lineWidth: ストロークの幅、つまりストロークの太さ。
- lineDashPattern: 破線パターン。
- path: グラフィックのパス。
- lineCap: ストロークの閉じられていない位置の形状。
-
[cpp]
view plaincopyovalShapeLayer.strokingColor = UIColor.whiteColor().CGColor
- ovalShapeLayer.fillColor =色() .CGColor
- ovalShapeLayer.lineWidth = 7
-
ここに新しい顔、UIBezierPath が登場します。これはベクトルベースのパスを作成でき、Core Graphics フレームワークによるパスのカプセル化です。 UIBezierPath は、楕円、長方形、または複数の直線と曲線セグメントで構成される形状などの単純な形状パスを定義できます。ここでは、初期化メソッド init(ovalInRect rect: CGRect) を使用して、完全な円のパスを定義する必要があります。パスを設定した後、ovalShapeLayerをloadingViewビューのLayerに追加すると、設定されたパスに従ってloadingViewにグラフィックを描画できます:
[cpp] view plaincopy
loadingView.layer( ovalShapeLayer)
コンパイルして実行して効果を確認します:
完全な円。次に行う必要があるのは、この円の一部のみを表示するようにすることです。これは、Google の読み込みアニメーションには円形の輪郭の約 5 分の 2 しか含まれていないためです。引き続き viewDidLoad() メソッドに注目し、loadingView.layer.addSublayer(ovalShapeLayer) コード行の上に別のコード行を追加します。 0.4
上記のコードは、ovalShapeLayer のストロークEnd プロパティを 0.4 に設定します。これは、円を描画するときに、ovalShapeLayer は円全体の 5 分の 2 のみを描画します。つまり、ストロークは円全体の 5 分の 1 で終了することを意味します。円の輪郭が 2 か所あります。コンパイルして実行して効果を確認します。
- これは希望どおりの効果のようですが、改善する必要がある詳細が 1 つあります。Google の読み込みアニメーションを見てください。円形の輪郭の青い部分が丸くなっています。丸い輪郭の両端は四角形です。この問題は簡単に解決できます。次のコード行を、loadingView.layer.addSublayer(ovalShapeLayer) 行の上に追加します。
このコード行は、ストロークの両端の形状を円に設定することを意味します。対応する 2 つの定数 kCALineCapButt と kCALineCapSquare も試してみることができます。もう一度コンパイルして実行して、効果を確認します。
ここまで、CALayer を使用してアニメーションの本体を描画しました。次に、それを動かす必要があります。 ViewController.swift に beginSimpleAnimate() メソッドを追加します。
[cpp] view plaincopy
func beginSimpleAnimation() {
-
letrotate = CABas icAnimation(keyPath: " ")
rotate.re petoCount = HUGE
- loadingView.layer.addAnimation(rotate, forKey: nil)
- }
- このメソッドでは、新しいフェイス CABasicAnimation が表示されます。このクラスは、animationWithKeyPath: 初期化メソッドを通じて、CAPropertyAnimation に基づいてさまざまなアニメーションを作成します。実例。一般的に使用される keyPath には次のものがあります:
- transform.rotation: 回転アニメーション。
- transform.ratation.x: アニメーションを x 軸で回転します。
- transform.ratation.y: アニメーションを y 軸で回転します。
- transform.ratation.z: アニメーションを Z 軸で回転します。
- transform.scale: アニメーションを比例的に拡大および縮小します。
- transform.scale.y: アニメーションを Y 軸に比例して拡大および縮小します。
- transform.scale.z: アニメーションを Z 軸に比例してスケールします。
- position: 位置を移動するアニメーション。
- 不透明度: 透明度のアニメーション。
- 上記は、一般的に使用されるアニメーション キーパスのほんの一部です。実際のアプリケーションでさらに詳しく調べていただければ幸いです。 beginSimpleAnimation() メソッドでは、transform.rotation を使用して回転アニメーションのインスタンスを作成し、アニメーションの 4 つのプロパティを設定します:
- duration: アニメーションの継続時間。
- fromValue: アニメーションの開始値。
- toValue: アニメーション終了値。
- repeatCount: 繰り返しの数。
このメソッドでこれらの属性を設定する意味は、アニメーション本体を連続的に回転させることであり、1 回転の時間は 1.5 秒です。上記の概念は UIView アニメーションにも存在しており、誰もがよく知っているはずです。次に、Layer の addAnimation(anim: CAAnimation, forKey key: String?) メソッドを使用して、回転アニメーション インスタンスをターゲット Layer に追加します。このメソッドのキーは、後で再利用するときに簡単に取得できるように、追加されたアニメーションをマークするために使用されます。値 nil を渡す必要はありません。最後に、beginSimpleAnimation() メソッドが viewWillAppear メソッド内で呼び出されます。
[cpp] view plaincopy
override func viewWillAppear(animated: Bool) {
beginSimpleAnimation ()
}
コンパイルして実行して効果を確認します。
これで、最初の単純な CALayer アニメーションが完成しました。次のセクションでは、新しいアニメーション タイプとアニメーションの組み合わせを紹介するために、より興味深い読み込みアニメーションを実装します。
ストローク アニメーションとアニメーション グループ
最初に達成される効果を見てみましょう:
この種の読み込みアニメーションは、NetEase News や Win バージョンの Google Chrome など、多くのアプリケーションに登場しています。まず、Main.storyboard を開き、新しい UIView を追加し、ViewController.swift に Outlet を追加します。次に、新しい CAShapeLayer を定義します。 anotherOvalShapeLayer: CAShapeLayer = CAShapeLayer()
それを viewDidLoad() メソッドに設定し、先ほど作成した complexLoadingView に追加します:
[cpp] プレーン コピーを表示
- an otherOvalShapeLayer.ストロークカラー = UIColor.whiteColor().CGColor
anotherOvalLayer.line width = 7
- anotherOvalRadius = complexLoadingView.frame.size にします.height/2 * 0.8
- anotherOvalShapeLayer.path = UIBezierPath(ovalInRect: CGRect(x: complexLoadingView.frame.size.width/2 - anotherOvalRadius, y: complexLoadingView.frame.size.height/2 - anotherOvalRadius, width: anotherOvalRadius * 2、高さ: anotherOvalRadius * 2)).CGPath
- anotherOvalShapeLayer.lineCap = kCALineCapRound
- complexLoadingView.layer.addSublayer(anotherOvalShapeLayer)
-
-
-
[cpp]
view plaincopy -
ストロークStartAnimate.toValue = 1
let ストロークEndAnimate = CABasicAnimation(keyPath: "ストロークエンド")
ストロークEndAnimate.fromValue = 0.0
ストロークEndAnimate.toValue = 1
-
let ストロークAnimateGroup = CAAnimationGroup()
ストロークAnimateGroup.duration = 1.5
ストロークAnimateGroup.repeatCount = 巨大です
ストロークAnimateGroup.animations = [ストロークStartAnimate, ストロークEndAnimate]
anotherOvalShapeLayer.addAnimation(ストロークAnimateGroup, forKey: nil)
-
ここではストローク開始アニメーションとストローク終了アニメーションという2つの新しいアニメーションタイプがありますが、CAShapeレイヤー描画を使用していますが、円が描画されます。 、ストロークの開始位置とストロークの終了位置もありますが、それらは同じ位置にあります。ストローク アニメーションの位置の値は 0 ~ 1 であり、0 は描画パスの開始位置を表し、1 は描画パスの位置を表します。描画されたパスの終了位置。
したがって、ストロークの開始位置を –0.5 から開始するストロークの開始位置を –0.5 から開始するストロークの開始位置をアニメーションに設定します。つまり、ストロークの描画が開始されるまで待機することです。描画。ストロークEndAnimateアニメーションでは、ストロークの終了位置を0から1まで通常通り円を描くことができます。このようにストロークの両端の描画時間が異なり、時間差が生じることで、連続的に円を描いたり消したりする効果が得られます。
ストロークStartAnimate とストロークEndAnimate は 2 つのアニメーションであり、レイヤー上でどのように動作しますか?このとき、CAAnimationGroup を使用します。名前のとおり、複数のアニメーションを 1 つのグループにまとめ、サブアニメーションを同時に実行します。アニメーション グループでは、アニメーションの継続時間、繰り返しの数、およびサブアニメーションの配列を設定できます。最後に、アニメーション グループをレイヤーに追加します。
最後に、viewWillAppear() メソッドで beginComplexAnimation() メソッドを呼び出します:
[cpp] view plaincopy
override func viewWillAppear(animated: Bool) {
-
beginS impleAnimation()
-
beginComplexAnimation()
}
コンパイルして実行して効果を確認します:
概要
CALayer アニメーションは、UIView アニメーションよりもリッチで、低レベルで、より効率的なアニメーションを実現できます。ただし、実際のアプリケーション開発では、UIView アニメーションが使用できる場合は、CALayer アニメーションは必要ありません。この記事は、CALayer アニメーションの概要を説明するものであり、CALayer アニメーションについての予備的な理解を提供します。後で、この記事でさらに多くの例を使用して、CALayer アニメーションをより深く理解し、それによって独自のアプリケーションのユーザー エクスペリエンスを向上させます。

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。HTMLはコンテンツ構造を担当し、CSSはスタイルを担当し、JavaScriptは動的な動作を担当します。 1。HTMLは、セマンティクスを確保するためにタグを使用してWebページの構造とコンテンツを定義します。 2。CSSは、セレクターと属性を介してWebページスタイルを制御して、美しく読みやすくします。 3。JavaScriptは、動的でインタラクティブな関数を実現するために、スクリプトを通じてWebページの動作を制御します。

htmlisnotaprogramminglanguage; itisamarkuplanguage.1)htmlStructuresandformatswebcontentusingtags.2)ItworkswithcsssssssssdjavascriptforInteractivity、強化を促進します。

HTMLは、Webページ構造の構築の基礎です。 1。HTMLは、コンテンツ構造とセマンティクス、および使用などを定義します。タグ。 2. SEO効果を改善するために、などのセマンティックマーカーを提供します。 3.タグを介したユーザーの相互作用を実現するには、フォーム検証に注意してください。 4. JavaScriptと組み合わせて、動的効果を実現するなどの高度な要素を使用します。 5.一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれ、検証ツールが必要です。 6.最適化戦略には、HTTP要求の削減、HTMLの圧縮、セマンティックタグの使用などが含まれます。

HTMLは、Webページを構築するために使用される言語であり、タグと属性を使用してWebページの構造とコンテンツを定義します。 1)htmlは、などのタグを介してドキュメント構造を整理します。 2)ブラウザはHTMLを分析してDOMを構築し、Webページをレンダリングします。 3)マルチメディア関数を強化するなど、HTML5の新機能。 4)一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれます。 5)最適化の提案には、セマンティックタグの使用とファイルサイズの削減が含まれます。

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 中国語版
中国語版、とても使いやすい
