UIViewクラス

2013. 05. 15
・継承
UIResponder : NSObject

・準拠
NSCoding
UIAppearance
UIAppearanceContainer
NSObject

・フレームワーク
/System/Library/Frameworks/UIKit.framework

・利用可能
iOS 2.0以降で利用可能

・手引書
iOS Viewプログラミングガイド

・宣言
UIPrintFormatter.h
UITextField.h
UIView.h



●概要

UIViewクラスは、画面上の矩形領域と領域内のコンテンツを管理するためのインターフェイスを定義します。
実行時には、ビューオブジェクトは領域内のコンテンツの描画を処理し、またコンテンツとの対話を処理します。
UIViewクラス自体は、背景色を持つ矩形領域を占める基本動作を提供します。
UIViewをサブクラス化し、必要な描画とイベント処理のコードを実装することによって、より洗練されたコンテンツを提供することができます。
またUIKitフレームワークは、簡単なボタンから複雑なテーブルまで使用できる標準的なサブクラスのセットが含まれています。
例えば、UILabelオブジェクトはテキスト文字列を、UIImageViewオブジェクトは画像を描画します。

ビューオブジェクトはアプリケーションとユーザが対話する主な方法なので、いくつかの責任を持っています。
その一部を以下に示します。
  • 描画とアニメーション
    • ビューはUIKitやCore Graphics、OpenGL ESなどの技術を使用して矩形領域内にコンテンツを描画します。
    • いくつかのビューのプロパティは新しい値にアニメーションすることができます。

  • レイアウトとサブビューの管理
    • ビューには0個以上のサブビューが含まれている場合があります。
    • 各ビューは親ビューに連動して、独自にデフォルトのサイズ変更動作を定義します。
    • ビューは必要に応じてサブビューのサイズや位置を定義することができます。

  • イベント処理
    • ビューはレスポンダであり、タッチイベントやUIResponderクラスによって定義されている他のイベントを処理することができます。
    • ビューは一般的なジェスチャ処理をするために、Gesture RecognizerをインストールするaddGestureRecognizer:メソッドを使用することができます。
ビューは他のビューを組み込んで洗練された視覚的な階層を生成することができます。
これは(スーパービューとして知られている)親ビューに(サブビューとして知られている)ビューを埋め込むことで親子関係を生成します。
通常サブビューの可視領域はスーパービューの境界でクリップされていませんが、iOSではclipsToBoundsプロパティを使って動作を変更することができます。
親ビューはサブビューをいくつでも含めることができますが、各サブビューが持てるスーパービューは一つだけで、サブビューを適切に配置する責任があります。

ビューのジオメトリはframeboundscenterプロパティによって定義されています。
frameはスーパービューの座標系内におけるビューの原点と大きさを定義し、一般的にビューのサイズや位置を調整するためにレイアウト時に使用されます。
centerプロパティはサイズの変更をせずに、ビューの位置を調整するために使用することができます。
boundsはビューの内部の大きさを定義しており、ほとんどはカスタム描画コードでのみ見られます。
frameのサイズ部分と境界矩形は対になっており、どちらかの矩形のサイズを変更すると両方のサイズが更新されます。

UIViewクラスの使用方法についての詳細は『iOS Viewプログラミングガイド』を参照してください。

:iOS 2.xでは、UIViewオブジェクトの最大サイズが1024 x 1024ポイントになっています。
iOS 3.0以降では、ビューはこの最大サイズに制限されていませんが、メモリの消費量によって制限されています。
ビューサイズは可能な限り小さく保つことが最大の利益となります。
実行されているiOSのバージョンに関わらず、画面の寸法より著しく大きなコンテンツはタイリングを検討する必要があります。


ビューの生成

プログラムでビューを生成するには、以下のようなコードを使用することができます。

CGRect viewRect = CGRectMake(10, 10, 100, 100);

UIView* myView = [[UIView alloc] initWithFrame:viewRect];

このコードはビューを生成し、スーパービューの座標系内の点(10, 10)の位置に(スーパービューへ一度追加されて)配置します。
別のビューへサブビューを追加するには、addSubview:メソッドを使用します。
iOSでは姉妹ビューを問題無く互いに重ねることができるので、複雑なビュー配置を行うことができます。
addSubview:メソッドは、他の姉妹の上に指定したビューを配置します。
insertSubView:aboveSubview:insertSubview:belowSubview:メソッドを使用して追加することにより、サブビューのz順序を指定することができます。
またexchangeSubviewAtIndex:withSubviewAtIndex:メソッドを使用して、既に追加されているサブビューの位置を交換することができます。

ビューを生成する時、ビューが正確にサイズ変更されるように、autoresizingMaskプロパティに適切な値を割り当てることが重要です。
ビューのサイズ変更は、主にアプリケーションのインターフェイスの向きが変更された時に発生しますが、それ以外の時にも発生する場合があります。
例えばsetNeedsLayoutメソッドを呼び出すと、ビューのレイアウトは強制的に更新されます。


ビューの描画サイクル

ビューの描画は必要に応じて発生します。
ビューを最初に表示する、あるいはレイアウト変更のために全てまたは一部を可視化する時に、システムはコンテンツの描画をビューに要求します。
ビューがUIKitやCore Graphicsを使用したカスタムコンテンツを含む場合、システムはビューのdrawRect:メソッドを呼び出します。
このメソッドの実装では、このメソッドを呼び出す前に自動的にシステムによって設定されている現在のグラフィックスコンテキストにビューのコンテンツを描画する責任があります。
これは画面に表示することができるビューのコンテンツの、静的視覚表現を生成します。

ビューの変更をする時の実際の内容は、ビューを再描画する必要があることをシステムに通知するという責務です。
これはビューのsetNeedsDisplaysetNeedsDisplayInRect:メソッドを呼び出すことによって行われます。
これらのメソッドは、次の描画サイクル中にビューを更新する必要があることをシステムに知らせます。
次の描画サイクルまでビューの更新は待機することになるので、複数のビューでこれらのメソッドを呼び出して同時に更新することができます。

:OpenGL ESを使用して描画する場合は、ビューのdrawRect:メソッドは呼び出されません。
代わりに、ビューの再描画が必要な時に適切な描画更新を開始するよう、貴方が決定します。
OpenGL ESを使用した描画についての詳細については『iOS OpenGL ES プログラミングガイド』を参照してください。

ビューの描画サイクルやサイクル内でのビューの役割についての詳細は、『iOS View プログラミングガイド』を参照してください。


アニメーション

いくつかのビューのプロパティを変更することでアニメーションを行うことができ、短時間でユーザに変更を伝えるアニメーションが生成できます。
UIViewクラスは実際にアニメーションを行うほとんどの処理を行いますが、欲しいアニメーションを行うプロパティの変更を示す必要があります。
アニメーションを開始する方法には異なる2つの方法があります。
  • iOS 4以降ではブロックベースのアニメーションメソッドを使用する。(推奨)
  • begin/commitアニメーションメソッドを使用する。
animateWithDuration:animations:などの)ブロックベースのアニメーションメソッドは、非常に簡単にアニメーションを生成できます。
一つのメソッドの呼び出しで、実行されるアニメーションとアニメーションのオプションを指定します。
しかしブロックベースのアニメーションはiOS 4以降でのみ利用可能です。
それより前のiOSのバージョンでアプリケーションを実行する場合は、アニメーションの開始と終了をマークするbeginAnimations:context:commitAnimationsクラスメソッドを使用する必要があります。

以下のUIViewクラスのプロパティはアニメーションすることができます。

    @property frame
    @property bounds
    @property center
    @property transform
    @property alpha
    @property backgroundColor
    @property contentStretch

アニメーションの構成についての詳細は『iOS View プログラミングガイド』を参照してください。


スレッディングの考慮事項

アプリケーションのユーザインターフェイスの操作は、メインスレッドで発生する必要があります。
したがって常にアプリケーションのメインスレッド上の実行中のコードから、UIViewクラスのメソッドを呼び出す必要があります。
厳密にはビューオブジェクト自身を生成する時は必要ではありませんが、他の全ての操作はメインスレッド上で行う必要があります


サブクラス化の注意

UIViewクラスは、ユーザとの対話を必要とするビジュアルコンテンツのため、サブクラス化が重要なポイントです。
UIViewのサブクラス化には多くの妥当な理由がありますが、基本的なUIViewクラスまたは標準システムビューでは必要とする機能が提供されていない場合のみ行うことを推奨します。
サブクラス化はビューを実装する部分とパフォーマンスの調整で、より多くの作業を必要とします。

サブクラス化を回避する方法についての詳細は、『サブクラス化の代替手段』を参照してください。


メソッドのオーバーライド

UIViewをサブクラス化する時、オーバーライドする必要があるごく少数のメソッドと、必要に応じてオーバーライドする可能性がある多くのメソッドがあります。
UIViewは高度な構成ができるクラスなので、『サブクラス化の代替手段』で説明しているように、カスタムメソッドをオーバーライドしなくても洗練されたビューの動作を実装する多くの方法があります。
一方、UIViewのサブクラスでオーバーライドを検討する可能性のあるメソッドを以下に示します。
  • 初期化:
    • initWithFrame:
      このメソッドを実装することを推奨します。
      また、このメソッドの代わりに、あるいは加えてカスタムの初期化メソッドを実装することもできます。
    • initWithCoder:
      Interface Builderのnibファイルからビューを読み込み、ビューに必要なカスタムの初期化を行う場合はこのメソッドを実装します。
    • layerClass
      ビューのバッキングストアに異なるCore Animationレイヤを使用する場合のみ、このメソッドを実装します。
      例えば描画にOpenGL ESを使用する場合、このメソッドをオーバーライドしてCAEAGLLayerクラスを返すようにしてください。

  • 描画と印刷:
    • drawRect:
      ビューにカスタムコンテンツを描画する場合に、このメソッドを実装します。
      ビューでカスタム描画を行わない場合は、このメソッドのオーバーライドは避けてください。
    • drawRect:forViewPrintFormatter:
      印刷中に異なるビューのコンテンツを描画する場合にのみ、このメソッドを実装します。

  • 制約:
    • requiresConstraintBasedLayout
      ビュークラスが適切な動作をするために制約が必要な場合、このクラスメソッドを実装します。
    • updateConstraints
      ビューとサブビュー間でカスタムの制約を生成する必要がある場合、このメソッドを実装します。
    • alignmentRectForFrame:frameForAlignmentRect:
      ビューが他のビューに対してどのように整列するかをオーバーライドする際に、このメソッドを実装します。

  • レイアウト:
    • sizeThatFits:
      サイズ変更操作中に通常とは異なるデフォルトのサイズを持つビューが必要な場合に、このメソッドを実装します。
      例えば、サブビューが正確に表示できないポイントにビューが縮小されることを防ぐために、このメソッドを使用する場合があります。
    • layoutSubviews
      制約や自動サイズ変更動作を提供するよりも、サブビューのレイアウトをより正確に制御する必要がある場合に、このメソッドを実装します。
    • didAddSubview:willRemoveSubview:
      サブビューの追加や削除を追跡する必要がある場合に、これらのメソッドを実装します。
    • willMoveToSuperview:didMoveToSuperview
      ビュー階層内で現在のビューの移動を追跡する必要がある場合に、これらのメソッドを実装します。
    • willMoveToWindow:didMoveToWindow
      別のウィンドウへのビューの移動を追跡する必要がある場合に、これらのメソッドを実装します。

  • イベント処理:

サブクラス化の代替手段


多くのビュー動作はサブクラス化を必要とせずに構成することができます。
メソッドのオーバーライドを始める前に、以下のプロパティや動作の修正が必要とする動作を提供するかどうかを検討してください。
  • addConstraint:
    ビューとそのサブビューのAuto Layout動作を定義します。

  • autoresizingMask
    スーパービューのフレームを変更した時のAuto Layout動作を提供します。
    これらの動作は制約と組み合わせることができます。

  • contentMode
    ビューのフレームとは対照的に、ビューのコンテンツのレイアウト動作を提供します。
    このプロパティは、どのようにコンテンツがビューに適合するようにスケーリングされ、キャッシュまたは再描画されるかに影響します。

  • contentStretch
    伸縮部分としてビューの一部を定義します。
    この動作は通常、ビューを毎回再描画するとパフォーマンスに影響と与えるような洗練されたレイアウトを必要とする、ボタンやその他可変ビューを実装するために使用されます。

  • hiddenまたはalpha
    ビューの描画されたコンテンツを非表示にしたりアルファを適用するのではなく、ビュー全体の透明度を変更します。

  • backgroundColor
    その色で描画するのではなく、ビューの色を設定します。

  • サブビュー
    drawRect:メソッドを使用してコンテンツを描画するのではなく、必要なコンテンツを画像やラベルのサブビューとして組み込みます。

  • Gesture Recognizer
    タッチイベントを自身で傍受して処理するためにはサブクラスではなく、ターゲットオブジェクトへのアクションメッセージを送信するためのGesture Recognizerを使用することができます。

  • アニメーション化
    自身で変化アニメーションを試みるのではなく、組み込みのアニメーションのサポートを使用してください。
    Core Animationが提供するアニメーションのサポートは高速かつ簡単に使用することができます。

  • 画像ベースの背景
    比較的静的なコンテンツを表示するビューの場合は、サブクラス化して自身で画像を描画する代わりに、Gesture RecognizerとUIImageViewオブジェクトの使用を検討してください。
    あるいはまた、一般的なUIViewオブジェクトを使用し、ビューのCALayerオブジェクトのコンテンツとして画像を割り当てることもできます。
アニメーションはサブクラス化や複雑な描画コードの必要とせずに、ビューに視覚的な変更を施す別の方法です。
UIViewクラスの多くのプロパティはアニメーション化でき、それらのプロパティの変更はシステムが生成するアニメーションの誘因になることを意味します。
アニメーションを開始し、後続の変更をアニメーション化する必要があることを示すコードは僅か一行です。
アニメーションのサポートについての詳細は『アニメーション』を参照してください。



●タスク

●ビューオブジェクトの初期化

– initWithFrame:

●ビューの視覚的外観の構成

  backgroundColor    プロパティ
  hidden    プロパティ
  alpha    プロパティ
  opaque    プロパティ
  clipsToBounds    プロパティ
  clearsContextBeforeDrawing    プロパティ
+ layerClass
  layer    プロパティ

●イベント関連の動作の構成

  userInteractionEnabled    プロパティ
  multipleTouchEnabled    プロパティ
  exclusiveTouch    プロパティ

●境界とフレーム矩形の構成

  frame    プロパティ
  bounds    プロパティ
  center    プロパティ
  transform    プロパティ

ビュー階層の管理

  superview    プロパティ
  subviews    プロパティ
  window    プロパティ
– addSubview:
– bringSubviewToFront:
– sendSubviewToBack:
– removeFromSuperview
– insertSubview:atIndex:
– insertSubview:aboveSubview:
– insertSubview:belowSubview:
– exchangeSubviewAtIndex:withSubviewAtIndex:
– isDescendantOfView:

●サイズ変更動作の構成

  autoresizingMask    プロパティ
  autoresizesSubviews    プロパティ
  contentMode    プロパティ
– sizeThatFits:
– sizeToFit
  contentStretch    プロパティ   iOS 6.0では非推奨

●サブビューのレイアウト

– layoutSubviews
– setNeedsLayout
– layoutIfNeeded

●制約ベースのレイアウトへの加入

+ requiresConstraintBasedLayout
– translatesAutoresizingMaskIntoConstraints
– setTranslatesAutoresizingMaskIntoConstraints:

●制約の管理

– constraints
– addConstraint:
– addConstraints:
– removeConstraint:
– removeConstraints:

●制約ベースのレイアウトでの測定

– systemLayoutSizeFittingSize:
– intrinsicContentSize
– invalidateIntrinsicContentSize
– contentCompressionResistancePriorityForAxis:
– setContentCompressionResistancePriority:forAxis:
– contentHuggingPriorityForAxis:
– setContentHuggingPriority:forAxis:

●制約ベースのレイアウトでのビューの整列

– alignmentRectForFrame:
– frameForAlignmentRect:
– alignmentRectInsets
– viewForBaselineLayout

●制約ベースのレイアウトのトリガ

– needsUpdateConstraints
– setNeedsUpdateConstraints
– updateConstraints
– updateConstraintsIfNeeded

●制約ベースのレイアウトのデバッグ

制約ベースのレイアウトのデバッグの詳細については『Cocoa Autolayout Release Notes』を参照してください。

– constraintsAffectingLayoutForAxis:
– hasAmbiguousLayout
– exerciseAmbiguityInLayout

●ビューの描画と更新

– drawRect:
– setNeedsDisplay
– setNeedsDisplayInRect:
  contentScaleFactor    プロパティ

●印刷用ビューコンテンツのフォーマット

– viewPrintFormatter
– drawRect:forViewPrintFormatter:

●Gesture Recognizersの管理

– addGestureRecognizer:
– removeGestureRecognizer:
  gestureRecognizers    プロパティ
– gestureRecognizerShouldBegin:

●ブロックによるビューのアニメーション

+ animateWithDuration:delay:options:animations:completion:
+ animateWithDuration:animations:completion:
+ animateWithDuration:animations:
+ transitionWithView:duration:options:animations:completion:
+ transitionFromView:toView:duration:options:completion:

●ビューのアニメーション

このセクションのメソッドの使用はiOS 4以降は推奨されません。
代わりにブロックベースのアニメーションメソッドを使用してください。

+ beginAnimations:context:
+ commitAnimations
+ setAnimationStartDate:
+ setAnimationsEnabled:
+ setAnimationDelegate:
+ setAnimationWillStartSelector:
+ setAnimationDidStopSelector:
+ setAnimationDuration:
+ setAnimationDelay:
+ setAnimationCurve:
+ setAnimationRepeatCount:
+ setAnimationRepeatAutoreverses:
+ setAnimationBeginsFromCurrentState:
+ setAnimationTransition:forView:cache:
+ areAnimationsEnabled

●状態の保存と復元

   restorationIdentifier property
– encodeRestorableStateWithCoder:
– decodeRestorableStateWithCoder:

●実行時のビューの識別

  tag    プロパティ
– viewWithTag:

●ビューの座標系間の変換

– convertPoint:toView:
– convertPoint:fromView:
– convertRect:toView:
– convertRect:fromView:

●ビュー内のヒットテスト

– hitTest:withEvent:
– pointInside:withEvent:

●ビューの編集セッションの終了

– endEditing:

●ビューの関連付け変更の観察

– didAddSubview:
– willRemoveSubview:
– willMoveToSuperview:
– didMoveToSuperview
– willMoveToWindow:
– didMoveToWindow



●プロパティ

alpha

レシーバのアルファ値です。

@property(nonatomic) CGFloat alpha

解説
このプロパティの値は0.0から1.0の範囲の浮動小数点の数値で、0.0は完全な透明を表し、1.0は完全な不透明を表します。
この値は現在のビューのみに影響を与えるもので、組み込まれているサブビューには影響を与えません。

このプロパティの変更はアニメーションすることができます。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


backgroundColor

レシーバの背景色です。

@property(nonatomic, copy) UIColor *backgroundColor

解説
このプロパティの変更はアニメーションすることができます。
デフォルト値はnilで、これは透明な背景色をもたらします。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


bounds

独自の座標系でビューの位置とサイズを表す境界の矩形です。

@property(nonatomic) CGRect bounds

解説
画面上において、境界矩形はフレーム矩形としてビューと同じ可視部分を表します。
デフォルトでは境界矩形の原点は(0, 0)ですが、ビューの異なる部分を表示するにはこの値を変更することができます。
境界矩形のサイズはフレーム矩形のサイズと対になっており、どちらかの変更は他方に影響を与えます。
境界のサイズを変更すると、その中心点から相対的にビューが拡大または縮小します。
境界矩形の座標は常にポイントで指定されます。

フレーム矩形を変更すると、drawRect:メソッドを呼び出すこと無くレシーバを自動的に再表示します。
フレーム矩形を変更した時にdrawRect:メソッドを呼び出したい場合は、UIViewContentModeRedrawcontentModeプロパティを設定してください。

このプロパティの変更はアニメーションすることができます。

デフォルトの境界の原点は (0, 0)で、サイズはフレーム矩形のサイズと同じです。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


center

フレームの中心です。

@property(nonatomic) CGPoint center

解説
中心はスーパービューの座標系内にポイント単位で指定します。
このプロパティの設定を変更すると、それに応じてframeプロパティの値が変わります。

フレーム矩形を変更すると、drawRect:メソッドを呼び出すこと無くレシーバを自動的に再表示します。
フレーム矩形を変更した時にdrawRect:メソッドを呼び出したい場合は、UIViewContentModeRedrawcontentModeプロパティを設定してください。

このプロパティの変更はアニメーションすることができます。
アニメーションブロックの開始にはbeginAnimations:context:クラスメソッド、終了にはcommitAnimationsクラスメソッドを使用します。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


clearsContextBeforeDrawing


描画前にレシーバの境界を自動的にクリアする必要があるかどうかを決定するブール値です。

@property(nonatomic) BOOL clearsContextBeforeDrawing

解説
YESに設定した場合、描画バッファはdrawRect:メソッドが呼び出される前に、透明な黒で自動的にクリアされます。
この動作はビューのコンテンツが再描画される時に、残存する視覚的な人工物が存在しないことを保証します。
ビューのopaqueプロパティもYESに設定されている場合、ビューのbackgroundColorプロパティがnil以外である必要があり、そうでなければ描画エラーが発生します。
このプロパティのデフォルト値はYESです。

このプロパティの値をNOに設定した場合、ビューのコンテンツがdrawRect:メソッド内で適切に描画されることを保証する責任があります。
描画コードが既に厳しく最適化されている場合、ビューの一部のみを再描画する必要がある時に、このプロパティをNOに設定することで特にスクロール中のパフォーマンスを向上させることができます。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


contentMode

境界が変更された時に、ビューがコンテンツをレイアウトする方法を決定するために使用されるフラグです。

@property(nonatomic) UIViewContentMode contentMode

解説
コンテンツモードは、ビューの境界が変更された時に、ビューのレイヤにキャッシュされたビットマップをどのように調整するかを指定します。
このプロパティは多くの場合、サイズ変更可能なコントロールの実装に使用され、通常contentStretchプロパティと組み合わせます。
毎回ビューのコンテンツを再描画する代わりに、(歪みを伴うか否かを含め)望むコンテンツの拡大縮小や、ビューの特定の位置への固定の指定に、このプロパティを使用することができます。

setNeedsDisplayまたはsetNeedsDisplayInRect:メソッドを呼び出すことによって、ビューのコンテンツの再描画を常に強制することができます。

このプロパティに割り当てることができる値のリストは、UIViewContentModeを参照してください。
このプロパティのデフォルト値はUIViewContentModeScaleToFillです。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


frame

スーパービューの座標系におけるビューの位置とサイズを表すフレーム矩形です。

@property(nonatomic) CGRect frame

解説
スーパービューの座標系におけるビューのサイズと位置を定義する矩形です。
ビューのサイズと位置をレイアウト操作する際に、この矩形を使用します。
このプロパティを設定すると、それに応じてcenterプロパティやbounds矩形のサイズで指定されたポイントが変更されます。

警告transformプロパティが恒等変換されていない場合、このプロパティの値は未定義であるため無視する必要があります。

フレーム矩形を変更すると、drawRect:メソッドを呼び出すこと無くレシーバを自動的に再表示します。
フレーム矩形を変更した時にdrawRect:メソッドを呼び出したい場合は、UIViewContentModeRedrawcontentModeプロパティを設定してください。

このプロパティの変更はアニメーションすることができます。
ただしtransformプロパティに非恒等変換が含まれている場合、frameプロパティの値は未定義で変更してはいけません。
その場合、代わりにcenterプロパティを使用してビューを再配置し、boundsプロパティを使用してサイズを調整することができます。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


hidden

レシーバを非表示にするかどうかを決定するブール値です。

@property(nonatomic, getter=isHidden) BOOL hidden

解説
このプロパティの値をYESに設定するとレシーバは非表示になり、NOにするとレシーバが表示になります。
デフォルト値はNOです。

非表示のビューはウィンドウから消え、入力イベントも受信しません。
しかしそのサブビューを含むスーパービューのリスト内には残っており、通常通り自動サイズ変更には参加しています。
サブビューを持つビューを非表示にすると、サブビューやその子孫も非表示にする効果があります。
この効果は暗黙であり、レシーバの子孫の非表示状態を変更するものではありません。

ウィンドウの現在のファーストレスポンダであるビューを非表示にすると、ビューの次に有効なキービューが新しいファーストレスポンダになります。

このプロパティの値はレシーバの状態のみに反映され、ビュー階層内のレシーバの祖先の状態を考慮していません。
したがってこのプロパティがNOでも、祖先が非表示の場合はレシーバがまだ非表示の可能性があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


layer

描画に使用する、ビューのCore Animationレイヤです。(読み込みのみ)

@property(nonatomic, readonly, retain) CALayer *layer

解説
このプロパティはnilになることはありません。
オブジェクトの実際のクラスは、layerClassメソッドによって返される値によって決定されます。
ビューはレイヤのデリゲートです。

警告:ビューはレイヤのデリゲートであるため、ビューを他のCALayerオブジェクトのデリゲートにしないでください。
また、このレイヤオブジェクトのデリゲートを変更しないでください。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


multipleTouchEnabled

レシーバがマルチタッチイベントを処理するかどうかを示すブール値です。

@property(nonatomic, getter=isMultipleTouchEnabled) BOOL multipleTouchEnabled

解説
YESに設定すると、レシーバはマルチタッチシーケンスに関連付けられた全てのタッチを受信します。
NOに設定すると、レシーバはマルチタッチシーケンスの内の最初のタッチイベントのみ受信します。
このプロパティのデフォルト値はNOです。

このプロパティがNOの場合でも、同じウィンドウ内の他のビューはタッチイベントを受信することができます。
排他的にマルチタッチイベントを処理するビューが必要な場合は、このプロパティとexclusiveTouchプロパティの両方をYESに設定してください。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


opaque


レシーバが不透明かどうかを決定するブール値です。

@property(nonatomic, getter=isOpaque) BOOL opaque

解説
このプロパティはビューを扱う方法として描画システムにヒントを提供します。
YESに設定した場合、ビューは完全な不透明として描画システムで扱い、描画システムはいくつかの描画操作を最適化し、パフォーマンスを向上させることができます。
NOに設定した場合、描画システムは通常他のコンテンツとビューを合成します。
このプロパティのデフォルト値はYESです。

不透明ビューは完全に不透明コンテンツで境界を埋めることを想定しているため、コンテンツのアルファ値は1.0である必要があります。
ビューが不透明で、境界が満たされていない、またはコンテンツが完全にあるいは部分的に透明である場合の結果は予測できません。
ビューが完全にまたは部分的に透明な場合は、このプロパティの値を常にNOに設定する必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


subviews

レシーバに直結しているサブビューです。(読み込みのみ)

@property(nonatomic, readonly, copy) NSArray *subviews

解説
このプロパティは、カスタムビュー階層に関連付けされたサブビューの取得に使用することができます。
配列内のサブビューの順序は画面上の表示順を反映しており、最後面のビューはインデックス0になります。

UIKitや他のシステムフレームワークで宣言されている複雑なビューの場合、ビューの全てのサブビューは一般的にプライベートとみなされ、随時変更されることがあります。
したがってシステムが提供するビューのこれらのタイプのサブビューを、取得や変更は行わないでください。
行った場合、将来のシステム更新時にコードが破損する可能性があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


superview

レシーバのスーパービューで、無い場合はnilになります。(読み込みのみ)

@property(nonatomic, readonly) UIView *superview

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


tag

アプリケーション内のビューオブジェクトを識別するのに使う整数です。

@property(nonatomic) NSInteger tag

解説
デフォルト値は0です。
このタグの値を設定することにより、後でビューを識別するために値を使用することができます。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


transform

境界の中心に対して、レシーバに適用する変換を指定します。

@property(nonatomic) CGAffineTransform transform

解説
変換の原点の値はcenterプロパティか、変更されている場合はレイヤのanchorPointプロパティで得られます。
(取得には、基礎となるCore Animationレイヤオブジェクトのlayerプロパティを使用します)
デフォルト値はCGAffineTransformIdentityです。

このプロパティの変更はアニメーションすることができます。
アニメーションブロックで、開始にはbeginAnimations:context:クラスメソッド、終了にはcommitAnimationsクラスメソッドを使います。
デフォルトでは全てcenter値(変更されている場合はanchorPoint値)です。

警告:このプロパティが恒等変換でない場合は、frameプロパティの値は未定義であるため無視する必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h



●クラスメソッド

animateWithDuration:animations:

指定された期間を使用して、一つ以上のビューへの変更をアニメーションします。

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations

パラメータ
duration
アニメーションの合計時間を秒単位で指定します。
負の値または0を指定した場合は、アニメーションをしない変更になります。
animations
ブロックオブジェクトはビューにコミットする変更を含みます。
これはビュー階層内のビューのアニメーション可能なプロパティをプログラムで変更する場所です。
このブロックはパラメータを取らず、戻り値はありません。
このパラメータはNULL以外にする必要があります。

解説
このメソッドはUIViewAnimationOptionCurveEaseInOutUIViewAnimationOptionTransitionNoneアニメーションオプションを使用して、直ちに指定したアニメーションを実行します。

アニメーション中は、アニメーション化されているビューに対して一時的にユーザとの対話が無効になっています。
(iOS 5より前では、ユーザとの対話はアプリケーション全体で無効になっています。)

利用可能
iOS 4.0以降で利用可能

宣言
UIView.h


animateWithDuration:animations:completion:

指定された期間と完了ハンドラを使用して、一つ以上のビューへの変更をアニメーションします。

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

パラメータ
duration
アニメーションの合計時間を秒単位で指定します。
負の値または0を指定した場合は、アニメーションをしない変更になります。
animations
ブロックオブジェクトはビューにコミットする変更を含みます。
これはビュー階層内のビューのアニメーション可能なプロパティをプログラムで変更する場所です。
このブロックはパラメータを取らず、戻り値はありません。
このパラメータはNULL以外にする必要があります。
completion
アニメーションシーケンスが終了した時に実行する、ブロックオブジェクトを指定します。
このブロックは戻り値を持たず、完了ハンドラが呼び出される前にアニメーションが実際に終了したかどうかを示す単一のブール引数を取ります。
アニメーションの期間が0の場合、このブロックは次の実行ループサイクルの開始時に実行されます。
このパラメータはNULLにすることができます。

解説
このメソッドはUIViewAnimationOptionCurveEaseInOutUIViewAnimationOptionTransitionNoneアニメーションオプションを使用して、直ちに指定したアニメーションを実行します。

例えば、ビューが完全な透明になるまでフェードして、その後ビュー階層から取り除く場合は以下のようなコードを使用します。

[UIView animateWithDuration:0.2
        animations:^{ view.alpha = 0.0; }
        completion:^(BOOL finished){ [view removeFromSuperview]; }];

アニメーション中は、アニメーション化されているビューに対して一時的にユーザとの対話が無効になっています。
(iOS 5より前では、ユーザとの対話はアプリケーション全体で無効になっています。)

利用可能
iOS 4.0以降で利用可能

宣言
UIView.h


animateWithDuration:delay:options:animations:completion:

指定された期間、遅延、オプション、そして完了ハンドラを使用して、一つ以上のビューへの変更をアニメーションします。

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

パラメータ
duration
アニメーションの合計時間を秒単位で指定します。
負の値または0を指定した場合は、アニメーションをしない変更になります。
delay
アニメーションを開始する前に待機する時間を秒単位で指定します。
0の値を指定した場合は即時アニメーションを開始します。
options
アニメーションを実行する方法を示すオプションのマスクです。
有効な定数のリストはUIViewAnimationOptionsを参照してください。
animations
ブロックオブジェクトはビューにコミットする変更を含みます。
これはビュー階層内のビューのアニメーション可能なプロパティをプログラムで変更する場所です。
このブロックはパラメータを取らず、戻り値はありません。
このパラメータはNULL以外にする必要があります。
completion
アニメーションシーケンスが終了した時に実行する、ブロックオブジェクトを指定します。
このブロックは戻り値を持たず、完了ハンドラが呼び出される前にアニメーションが実際に終了したかどうかを示す単一のブール引数を取ります。
アニメーションの期間が0の場合、このブロックは次の実行ループサイクルの開始時に実行されます。
このパラメータはNULLにすることができます。

解説
このメソッドはビューで実行するアニメーションのセットを開始します。
animationsパラメータ内のブロックオブジェクトには、一つ以上のビューのプロパティをアニメーション化するためのコードが含まれています。

アニメーション中は、アニメーション化されているビューに対して一時的にユーザとの対話が無効になっています。
(iOS 5より前では、ユーザとの対話はアプリケーション全体で無効になっています。)
ユーザがビューと対話できるようにしたい場合は、optionsパラメータにUIViewAnimationOptionAllowUserInteraction定数を含めてください。

利用可能
iOS 4.0以降で利用可能

宣言
UIView.h


beginAnimations:context:

begin/commitアニメーションブロックの開始を印します。

+ (void)beginAnimations:(NSString *)animationID context:(void *)context

パラメータ
animationID
アニメーション用にアプリケーションが提供する識別子です。
context
このアニメーションのセットに関連付けたいカスタムデータです。
アニメーションデリゲートメッセージに渡される情報で、セレクタはsetAnimationWillStartSelector:setAnimationDidStopSelector:メソッドを使用して設定します。

解説
このメソッドは、一つ以上のアニメーションの実行を指定したいことをシステムに伝えます。
このメソッドを呼び出した後、(setAnimation...クラスメソッドを使用して)アニメーションのオプションを構成し、ビューの希望するアニメーション可能なプロパティを変更します。
ビューのプロパティを変更し終えたら、設定を閉じてアニメーションをスケジュールに入れるためにcommitAnimationsメソッドを呼び出します。

必要に応じて(以前のアニメーションのセットをコミットする前にこのメソッドを再度呼び出すことによって)アニメーションのセットをネスト(入れ子に)することができます。
ネストしたアニメーションは一緒にまとめられ、ネストされたグループに異なるアニメーションのオプションを設定することができます。

setAnimationWillStartSelector:またはsetAnimationDidStopSelector:メソッドを使用して開始あるいは停止セレクタをインストールする場合、animationIDcontextパラメータに指定された値は実行時にセレクタに渡されます。
それらのセレクタに追加情報を渡すために、これらのパラメータを使用することができます。

このメソッドの使用はiOS 4.0以降では推奨されません。
代わりにアニメーションを指定するには、ブロックベースのアニメーションメソッドを使用する必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


commitAnimations

begin/commitアニメーションブロックと、実行しているアニメーションのスケジュールの終了を印します。

+ (void)commitAnimations

解説
現在のアニメーションのセットが最も外側のセットである場合、アプリケーションが実行ループに戻った時に、このメソッドはアニメーションを開始します。
現在のアニメーションのセットが他のセットの中にネストされている場合、このメソッドはアニメーションの最も外側のセットがコミットされるまで待機し、その時に全てのアニメーションがコミットします。

アニメーションはアプリケーションの妨害を回避するように、別のスレッドで実行されます。
このように、複数のアニメーションは互いの上に積むことができます。
別のアニメーションが進行している間にアニメーションを開始する方法については、setAnimationBeginsFromCurrentState:を参照してください。

このメソッドの使用はiOS 4.0以降では推奨されません。
代わりにアニメーションを指定するには、ブロックベースのアニメーションメソッドを使用する必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


layerClass

このクラスのインスタンス用のレイヤの生成に使用するクラスを返します。

+ (Class)layerClass

戻り値
ビューのCore Animationレイヤの生成に使用するクラスを返します。

解説
このメソッドはデフォルトでCALayerクラスのオブジェクトを返します。
サブクラスはこのメソッドをオーバーライドし、必要に応じて異なるレイヤクラスを返すことが出来ます。
例えば描画にOpenGL ESを使用する場合、このメソッドをオーバーライドしてCAEAGLLayerクラスのクラスオブジェクトを返します。

このメソッドは、対応するレイヤオブジェクトを生成するために、ビューの生成の初期に一度だけ呼び出されます。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


setAnimationCurve:

アニメーションブロック内のプロパティの変更をアニメーションする時に使用するカーブを設定します。

+ (void)setAnimationCurve:(UIViewAnimationCurve)curve

解説
メソッドのbegin/commitセットを使用してアニメーションを指定する場合、アニメーションに使用するカーブの種類の指定するためにこのメソッドを使用することができます。
アニメーションブロックの外部から呼び出した場合、このメソッドは何もしません。
beginAnimations:context:commitAnimationsメソッドの呼び出しの間で呼び出す必要があります。
そしてビューのアニメーション可能なプロパティを変更する前に、このメソッドを呼び出す必要があります。
デフォルト値はUIViewAnimationOptionCurveEaseInOutです。

このメソッドの使用はiOS 4.0以降では推奨されません。
代わりにアニメーションとアニメーションカーブのオプションの指定にanimateWithDuration:delay:options:animations:completion:メソッドを使用する必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


setAnimationDuration:

アニメーションブロックでアニメーションの期間を(秒単位で)設定します。

+ (void)setAnimationDuration:(NSTimeInterval)duration

パラメータ
duration
アニメーションを発生させる期間を秒単位で指定します。

解説
メソッドのbegin/commitセットを使用してアニメーションを指定する場合、アニメーションの期間を指定するためにこのメソッドを使用することができます。
アニメーションブロックの外部から呼び出した場合、このメソッドは何もしません。
beginAnimations:context:commitAnimationsメソッドの呼び出しの間で呼び出す必要があります。
そしてビューのアニメーション可能なプロパティを変更する前に、このメソッドを呼び出す必要があります。
デフォルト値は0.2秒です。

このメソッドの使用はiOS 4.0以降では推奨されません。
代わりにアニメーションとその期間の指定には、ブロックベースのアニメーションメソッドを使用する必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


setAnimationsEnabled:

アニメーションが有効かどうかを設定します。

+ (void)setAnimationsEnabled:(BOOL)enabled

パラメータ
enabled
YESの場合はアニメーションは有効に、NOの場合は無効になります。

解説
アニメーションはデフォルトで有効になっています。
アニメーションを無効にした場合、それ以降のアニメーションブロックのコードは実行されますが、アニメーションは実際に発生しません。
したがってアニメーションブロック内で行った変更は、アニメーション化する代わりに直ぐに反映されます。
これはブロックベースのアニメーションメソッドまたはbegin/commitアニメーションメソッドを使用するかどうかに関わりません。

このメソッドは呼び出された後に提出されたアニメーションのみに影響を与えます。
既にアニメーションが実行されている時にこのメソッドを呼び出した場合、それらが自然な終点に到達するまでアニメーションは継続して実行されます。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


setAnimationTransition:forView:cache:

アニメーションブロックの間にビューに適用する遷移を設定します。

+ (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache

パラメータ
transition
viewに適用する遷移を指定します。
有効な値はUIViewAnimationTransitionで説明しています。

view
遷移を適用するビューを指定します。
cache
YESの場合、viewの前後の画像を一度描画し、アニメーションのフレームを生成するために使用します。
キャッシュすると性能を向上させることができますが、このパラメータをYESに設定する場合は、遷移中にビューまたはサブビューを更新することはできません。
ビューやサブビューを更新すると、キャッシュの動作に鑑賞し、アニメーション中のビューのコンテンツが不正確(または間違った場所)に描画される可能性があります。
遷移が終了するまでビューの更新は待つ必要があります。

NOの場合、ビューとその内容は遷移アニメーションの各フレーム毎に更新する必要がありますが、フレームレートに著しく影響を与える可能性があります。

解説
遷移中のビューの外観を変更したい(例えばあるビューから別のビューにフリップする)場合、以下のようにUIViewのインスタンスのコンテナビューを使用します。
  1. アニメーションブロックの開始
  2. コンテナビューの遷移を設定
  3. コンテナビューからサブビューを削除
  4. コンテナビューに新しいサブビューを追加
  5. アニメーションブロックをコミット
このメソッドの使用はiOS 4.0以降では推奨されません。
代わりに遷移の実行には、transitionWithView:duration:options:animations:completion:メソッドを使用する必要があります。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


transitionFromView:toView:duration:options:completion:

与えられたパラメータを使用して、指定されたビュー間の遷移アニメーションを生成します。

+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion

パラメータ
fromView
遷移を開始するビューを指定します。
デフォルトでは、このビューは遷移の一部としてスーパービューから削除されます。
toView
遷移を終了するビューを指定します。
デフォルトでは、このビューは遷移の一部としてfromViewのスーパービューに追加されます。
duration
遷移アニメーションの期間を秒単位で指定します。
負の値または0を指定した場合は、アニメーションをしない変更になります。
options
アニメーションを実行する方法を示すオプションのマスクです。
有効な定数のリストはUIViewAnimationOptionsを参照してください。
completion
アニメーションシーケンスが終了した時に実行する、ブロックオブジェクトを指定します。
このブロックは戻り値を持たず、完了ハンドラが呼び出される前にアニメーションが実際に終了したかどうかを示す単一のブール引数を取ります。
アニメーションの期間が0の場合、このブロックは次の実行ループサイクルの開始時に実行されます。
このパラメータはNULLにすることができます。

解説
このメソッドは、frontViewパラメータのビューからtoViewパラメータのビューに遷移する簡単な方法を提供します。
デフォルトでは、frontViewのビューはtoViewのビューによってビュー階層内で置換されます。
両方のビューが既にビュー階層の一部である場合、単純に非表示または表示にするためのoptionsパラメータでUIViewAnimationOptionShowHideTransitionViewsオプションを含めることができます。
で表示または非表示にすることができます。

このメソッドは、これらビュー階層内のビューのみを変更します。
どのような方法でもアプリケーションのビューコントローラは変更されません。
例えば、ビューコントローラによって表示されたルートビューの変更にこのメソッドを使用する場合、変更を処理するためには適切にビューコントローラを更新する責任があります。

ビューの遷移は別のアニメーションが既に実行中でない限り直ちに開始されますが、その場合には現在のアニメーションが終了した直後に開始されます。

アニメーション中は、アニメーション化されているビューに対して一時的にユーザとの対話が無効になっています。
(iOS 5より前では、ユーザとの対話はアプリケーション全体で無効になっています。)
ユーザがビューと対話できるようにしたい場合は、optionsパラメータにUIViewAnimationOptionAllowUserInteraction定数を含めてください。

利用可能
iOS 4.0以降で利用可能

宣言
UIView.h


transitionWithView:duration:options:animations:completion:

指定されたコンテナビューの遷移アニメーションを生成します。

+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

パラメータ
view
遷移を実行するコンテナビューを指定します。
duration
遷移アニメーションの期間を秒単位で指定します。
負の値または0を指定した場合は、アニメーションをしない変更になります。
options
アニメーションを実行する方法を示す、オプションのマスクです。
有効な定数のリストはUIViewAnimationOptionsを参照してください。
animations
指定されたビューに希望する変更が含まれているブロックオブジェクトです。
このブロックはパラメータを取らず、戻り値はありません。
このパラメータはNULL以外にする必要があります。
completion
アニメーションシーケンスが終了した時に実行する、ブロックオブジェクトを指定します。
このブロックは戻り値を持たず、完了ハンドラが呼び出される前にアニメーションが実際に終了したかどうかを示す単一のブール引数を取ります。
アニメーションの期間が0の場合、このブロックは次の実行ループサイクルの開始時に実行されます。
このパラメータはNULLにすることができます。

解説
このメソッドは指定されたビューの状態に変化されるように遷移を適用します。
animationsパラメータで指定したブロックには、希望する状態変化が含まれます。
このブロックを使用して、指定したビューのサブビューを追加、削除、表示、または非表示にすることができます。
他のアニメーション可能な変更を組み込みたい場合は、optionパラメータにUIViewAnimationOptionAllowAnimatedContentキーを含める必要があります。

以下のコードは指定されたコンテナビューのフリップ遷移を生成します。
遷移の適切な時点で、あるサブビューが除去されて別のコンテナビューに追加されます。
これは新しいビューが新しいサブビューと場所に反転するように見えますが、実際には同じビューに新しい構成で元の場所に戻るだけです。

[UIView transitionWithView:containerView
        duration:0.2
        options:UIViewAnimationOptionTransitionFlipFromLeft
        animations:^{ [fromView removeFromSuperview]; [containerView addSubview:toView]
}
        completion:NULL];

アニメーション中は、アニメーション化されているビューに対して一時的にユーザとの対話が無効になっています。
(iOS 5より前では、ユーザとの対話はアプリケーション全体で無効になっています。)
ユーザがビューと対話できるようにしたい場合は、optionsパラメータにUIViewAnimationOptionAllowUserInteraction定数を含めてください。

利用可能
iOS 4.0以降で利用可能

宣言
UIView.h



●インスタンスメソッド

addGestureRecognizer:

ビューにGesture Recognizerを付加します。

- (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer

パラメータ
gestureRecognizer
UIGestureRecognizerクラスから派生したクラスのオブジェクトを指定します。
このパラメータはnilでない必要があります。

解説
ビューにGesture Recognizerを付加し、ビューとその全てのサブビューにヒットテストされたタッチを受信させることによって、表現されたジェスチャの範囲を定義します。
ビューはGesture Reconizerを保持します。

利用可能
iOS 3.2以降で利用可能

宣言
UIView.h


addSubview:

レシーバのサブビューのリストの最後にビューを追加します。

- (void)addSubview:(UIView *)view

パラメータ
view
追加するビューを指定します。
このビューはレシーバによって保持されます。
追加された後、このビューは他のサブビューの上に表示されます。

解説
このメソッドはviewを保持し、そのスーパービューであるレシーバに次のレスポンダであることを設定します。

ビューは一つだけスーパービューを持つことができます。
viewが既にスーパービューを持っていてビューがレシーバでない場合、このメソッドはレシーバに新しいスーパービューを加える前に、以前のスーパービューを削除します。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


drawRect:

渡された矩形内にレシーバの画像を描画します。

- (void)drawRect:(CGRect)rect

パラメータ
rect
更新する必要があるビューの境界部分を指定します。
最初にビューを描画する際、この矩形は通常ビューの全可視境界です。
しかし以降の描画操作時には、矩形はビューの一部のみを指定することができます。

解説
このメソッドのデフォルト実装は何もしません。
ビューのコンテンツの描画に(Core GraphicsやUIKitなどの)ネイティブの描画テクノロジーを使用するサブクラスは、このメソッドをオーバーライドして描画コードを実装する必要があります。
ビューが他の方法でコンテンツを設定する場合は、このメソッドをオーバーライドする必要はありません。
例えば単にビューに背景色を表示する場合や、基礎となるレイヤオブジェクトを直接使用してビューにコンテンツを設定する場合は、このメソッドをオーバーライドする必要はありません。
同様にビューの描画にOpenGL ESを使用する場合は、このメソッドをオーバーライドしてはいけません。

このメソッドが呼び出された時点で、UIKitはビューに適切な描画環境を構成し、コンテンツをレンダリングするために必要な描画メソッドや関数を簡単に呼び出すことができます。
具体的には、UIKitは描画のためのグラフィックスコンテキストを生成・構成し、ビューの境界矩形の原点がその原点と一致するようにコンテキストの変換を調整します。
UIGraphicsGetCurrentContext関数を使用してグラフィックスコンテキストへの参照を取得することができますが、drawRect:メソッドへの呼び出しの間で変更される場合があるためグラフィックスコンテキストは保持しません。

rectパラメータで指定された矩形への描画は制限する必要があります。
更にビューのopaqueプロパティがYESに設定されている場合、drawRect:メソッドは不透明なコンテンツで指定された矩形を全て満たす必要があります。

UIViewからの直接のサブクラスの場合、このメソッドの実装でsuperを呼び出す必要はありません。
しかし異なるビュークラスをサブクラス化している場合は、実装の中のいくつかの点でsuperを呼び出す必要があります。

このメソッドはビューが最初に表示された時、またはビューの可視部分が無効になるイベントが発生した時に呼び出されます。
このメソッドは自身で直接呼び出しては行けません。
ビューの一部を無効にし、その部分を再描画する場合は、代わりにsetNeedsDisplayまたはsetNeedsDisplayInRect:メソッドを呼び出してください。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


initWithFrame:

指定されたフレーム矩形で新たに割り当てられたビューオブジェクトを初期化して返します。

- (id)initWithFrame:(CGRect)aRect

パラメータ
aRect
ビューのフレーム矩形をポイント単位で指定します。
フレームの原点は、それを追加する予定のスーパービューに依存します。
このメソッドは、それに応じてcenterboundsプロパティを設定するためにフレーム矩形を使用します。

戻り値
初期化されたビューオブジェクト、あるいはオブジェクトが生成できなかった場合はnilになります。

解説
新しいビューオブジェクトは、使用する前にウィンドウのビュー階層に挿入する必要があります。
プログラムでビューオブジェクトを生成する場合、このメソッドはUIViewクラスの指定イニシャライザです。
サブクラスでカスタムの初期化を実行するためにこのメソッドをオーバーライドすることができますが、実装の開始時にsuperを呼び出す必要があります。

インターフェイスの設計にInterface Builderを使用する場合、ビューオブジェクトがその後nibファイルから読み込まれた時には、このメソッドは呼び出されません。
nibファイル内のオブジェクトは再構成した後、initWithCoder:メソッドを使用して初期化され、nibファイルに格納された属性と一致するようにビューの属性が修正されます。
ビューがnibファイルから読み込まれる方法についての詳細は『Resource Programming Guide』を参照してください。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


insertSubview:atIndex:

指定したインデックスにサブビューを挿入します。

- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index

パラメータ
view
挿入するビューを指定します。
この値はnilにすることはできません。
index
ビューを挿入するsubviewsプロパティの配列内のインデックスを指定します。
サブビューのインデックスは0から始まり、サブビューの数を超えることはできません。

解説
このメソッドはビューを保持し、新しいスーパービューであるレシーバに次のレスポンダを設定します。

ビューは一つだけスーパービューを持つことができます。
viewが既にスーパービューを持っていてビューがレシーバでない場合、このメソッドはレシーバに新しいスーパービューを加える前に、以前のスーパービューを削除します。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


layoutSubviews

サブビューをレイアウトします。

- (void)layoutSubviews

解説
このメソッドのデフォルト実装は、iOS 5.1以前は何もしません。
そうでない場合、デフォルト実装では任意のサブビューのサイズと位置を決定するために設定した制約を使用します。

より正確にサブビューのレイアウトを実行するために、必要に応じてサブクラスでこのメソッドをオーバーライドすることができます。
サブビューの自動サイズ変更と制約ベースの動作が希望する動作を提供しない場合のみ、このメソッドをオーバーライドする必要があります。
サブビューのフレーム矩形を直接設定するために実装を使用することができます。

このメソッドを直接呼び出すことはできません。
レイアウトの更新を強制したい場合は、代わりに次の描画更新の前にsetNeedsLayoutメソッドを呼び出します。
ビューのレイアウトを直ぐに更新したい場合は、layoutIfNeededメソッドを呼び出してください。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


removeFromSuperview

スーパービューとそのウィンドウからレシーバを解除し、レスポンダチェーンから削除します。

- (void)removeFromSuperview

解説
レシーバのスーパービューがnilでない場合、スーパービューはレシーバを解放します。
ビューを再利用する予定がある場合、このメソッドを呼び出す前にそれを保持し、必要に応じて後で再度解放してください。
ビューのdrawRect:メソッドの内側からこのメソッドを決して呼び出さないでください。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


setNeedsDisplay

再描画が必要であるとして、レシーバの境界矩形全体を印します。

- (void)setNeedsDisplay

解説
ビューのコンテンツを再描画する必要があることをシステムに通知するために、このメソッドかsetNeedsDisplayInRect:を使用することができます。
このメソッドは要求の印を作ると、すぐにコードに制御を返します。
ビューは実際には次の再描画サイクルまで再描画されず、全てのビューが無効化された時点で更新されます。

:ビューの後ろがCAEAGLLayerオブジェクトになっている場合、このメソッドは効果がありません。
これはビューが(UIKitやCore Graphicsなど)ネイティブの描画テクノロジーのみを使用してコンテンツをレンダリングすること意図しているためです。

ビューのコンテンツや外観を変更した時のみ、ビューの再描画を要求するためにこのメソッドを使用する必要があります。
単にビューのジオメトリを変更する場合は、通常ビューを再描画しません。
代わりに既存のコンテンツはビューのcontentModeプロパティの値に基づいて調整されます。
変更する必要の無いコンテンツの再描画を避けることによって、既存のコンテンツの再表示のパフォーマンスを向上させることができます。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


setNeedsDisplayInRect:

再描画が必要であるとして、レシーバの矩形全体を印します。

- (void)setNeedsDisplayInRect:(CGRect)invalidRect

パラメータ
invalidRect
無効として印すレシーバの矩形領域で、レシーバの座標系内で指定する必要があります。

解説
ビューのコンテンツを再描画する必要があることをシステムに通知するために、このメソッドかsetNeedsDisplayを使用することができます。
このメソッドは無効な矩形のビューの現在のリストに指定された矩形を追加し、すぐに返します。
ビューは実際には次の再描画サイクルまで再描画されず、全てのビューが無効化された時点で更新されます。

:ビューの後ろがCAEAGLLayerオブジェクトになっている場合、このメソッドは効果がありません。
これはビューが(UIKitやCore Graphicsなど)ネイティブの描画テクノロジーのみを使用してコンテンツをレンダリングすること意図しているためです。

ビューのコンテンツや外観を変更した時のみ、ビューの再描画を要求するためにこのメソッドを使用する必要があります。
単にビューのジオメトリを変更する場合は、通常ビューを再描画しません。
代わりに既存のコンテンツはビューのcontentModeプロパティの値に基づいて調整されます。
変更する必要の無いコンテンツの再描画を避けることによって、既存のコンテンツの再表示のパフォーマンスを向上させることができます。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


viewWithTag:

指定した値と一致するビューを返します。

- (UIView *)viewWithTag:(NSInteger)tag

パラメータ
tag
検索するためのタグ値を指定します。

戻り値
tagパラメータの値に一致する、tagプロパティで印したレシーバの階層内のビューです。

解説
このメソッドは指定されたビューの現在のビューと全てのサブビューを検索します。

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h



●定数

UIViewAnimationOptions

ブロックを持つビューをアニメーション化するためのオプションを指定します。

enum    
    UIViewAnimationOptionLayoutSubviews=1<<0,
    UIViewAnimationOptionAllowUserInteraction=1<<1,
    UIViewAnimationOptionBeginFromCurrentState=1<<2,
    UIViewAnimationOptionRepeat=1<<3,
    UIViewAnimationOptionAutoreverse=1<<4,
    UIViewAnimationOptionOverrideInheritedDuration=1<<5,
    UIViewAnimationOptionOverrideInheritedCurve=1<<6,
    UIViewAnimationOptionAllowAnimatedContent=1<<7,
    UIViewAnimationOptionShowHideTransitionViews=1<<8,
     
    UIViewAnimationOptionCurveEaseInOut=0<<16,
    UIViewAnimationOptionCurveEaseIn=1<<16,
    UIViewAnimationOptionCurveEaseOut=2<<16,
    UIViewAnimationOptionCurveLinear=3<<16,
     
    UIViewAnimationOptionTransitionNone=0<<20,
    UIViewAnimationOptionTransitionFlipFromLeft=1<<20,
    UIViewAnimationOptionTransitionFlipFromRight=2<<20,
    UIViewAnimationOptionTransitionCurlUp=3<<20,
    UIViewAnimationOptionTransitionCurlDown=4<<20,
    UIViewAnimationOptionTransitionCrossDissolve=5<<20,
    UIViewAnimationOptionTransitionFlipFromTop=6<<20,
    UIViewAnimationOptionTransitionFlipFromBottom=7<<20,
};    
typedef NSUInteger UIViewAnimationOptions;    

定数

UIViewAnimationOptionLayoutSubviews
親ビューと一緒にアニメーションするように、コミット時にサブビューを配置します。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionAllowUserInteraction
アニメーション中にビューがユーザと対話することができます。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionBeginFromCurrentState
既に動作しているアニメーションに関連付けられている現在の設定からアニメーションを開始します。
このキーが存在しない場合、動作中のアニメーションは新しいアニメーションが開始される前に終了させることができます。
他のアニメーションが動作していない場合、このキーは影響を与えません。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionRepeat
アニメーションを無限に繰り返します。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionAutoreverse
アニメーションを往復します。
UIViewAnimationOptionRepeatオプションと組み合わせて使用する必要があります。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionOverrideInheritedDuration
アニメーションが提出された時に、指定された元の期間値を使用してアニメーションをするように強制します。
このキーが存在しない場合、アニメーションは動作中のアニメーションの残り期間を継承します。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionOverrideInheritedCurve
アニメーションが提出された時に、指定された元のカーブ値を使用してアニメーションをするように強制します。
このキーが存在しない場合、アニメーションは動作中のアニメーションのカーブを継承します。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionAllowAnimatedContent
動的にプロパティ値を変更して再描画することによってビューをアニメーションします。
このキーが存在しない場合、ビューはスナップショット画像を使用してアニメーションします。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionShowHideTransitionViews
存在する場合、ビューの遷移を実行する時に、このキーはビューを(削除や追加をする代わりに)非表示や表示にします。
このキーを使用する時は、両方のビューが親ビュー階層に既に存在する必要があります。
このキーが存在しない場合、親ビューのサブビューのリストに遷移のto-viewが追加され、from-viewが削除されます。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionCurveEaseInOut
ease-in ease-outカーブによって、アニメーションはゆっくり開始し、期間の中間では加速し、完了前には再び遅くなります。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionCurveEaseIn
ease-inカーブによって、アニメーションはゆっくり開始し、進行と共に加速します。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionCurveEaseOut
ease-outカーブによって、アニメーションは速く開始し、進行と共に減速します。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionCurveLinear
リニアアニメーションカーブによって、期間中は等速度でアニメーションします。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionTransitionNone
遷移の指定はありません。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionTransitionFlipFromLeft
垂直軸を中心にビューが左から右に反転する遷移です。
ビューの左側が手前に、右側が奥に向かって移動します。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionTransitionFlipFromRight
垂直軸を中心にビューが右から左に反転する遷移です。
ビューの右側が手前に、左側が奥に向かって移動します。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionTransitionCurlUp
ビューの下部から上へ巻き上げる遷移を行います。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionTransitionCurlDown
ビューの上部から下へ巻き下げる遷移を行います。
iOS 4.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionTransitionCrossDissolve
あるビューから次のビューへディゾルブする遷移です。
iOS 5.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionTransitionFlipFromTop
水平軸を中心に上から下に反転する遷移です。
ビューの上側が手前に、下側が奥に向かって移動します。
iOS 5.0以降で利用可能
UIView.hで宣言

UIViewAnimationOptionTransitionFlipFromBottom
水平軸を中心に下から上に反転する遷移です。
ビューの下側が手前に、上側が奥に向かって移動します。
iOS 5.0以降で利用可能
UIView.hで宣言

利用可能
iOS 4.0以降で利用可能

宣言
UIView.h


UIViewAnimationCurve

サポートされているアニメーションカーブを指定します。

typedef enum {
    UIViewAnimationCurveEaseInOut,
    UIViewAnimationCurveEaseIn,
    UIViewAnimationCurveEaseOut,
    UIViewAnimationCurveLinear
} UIViewAnimationCurve;

定数

UIViewAnimationCurveEaseInOut
ease-in ease-outカーブは、アニメーションをゆっくり開始し、期間の中間では加速、終了前にはまた減速するカーブです。
これはほとんどのアニメーションでデフォルトのカーブです。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewAnimationCurveEaseIn
ease-inカーブは、アニメーションをゆっくり開始し、進行に応じて加速します。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewAnimationCurveEaseOut
ease-outカーブは、アニメーションの開始時には速く、完了に向けて減速します。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewAnimationCurveLinear
線形アニメーションカーブは、アニメーションの期間中、一定の速度で進行します。
iOS 2.0以降で利用可能
UIView.hで宣言

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


UIViewContentMode

ビューのサイズが変更された時に、コンテンツを調整する方法を指定します。

typedef enum {
    UIViewContentModeScaleToFill,
    UIViewContentModeScaleAspectFit,
    UIViewContentModeScaleAspectFill,
    UIViewContentModeRedraw,
    UIViewContentModeCenter,
    UIViewContentModeTop,
    UIViewContentModeBottom,
    UIViewContentModeLeft,
    UIViewContentModeRight,
    UIViewContentModeTopLeft,
    UIViewContentModeTopRight,
    UIViewContentModeBottomLeft,
    UIViewContentModeBottomRight,
} UIViewContentMode;

定数

UIViewContentModeScaleToFill
必要に応じてコンテンツの縦横比を変更することによって、ビューのサイズに合わせてコンテンツを拡大縮小します。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeScaleAspectFit
縦横比を維持することによって、ビューのサイズに合わせてコンテンツを拡大縮小します。
ビューの境界の残りの領域は透明になります。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeScaleAspectFill
ビューのサイズを満たすようにコンテンツを拡大縮小します。
ビューの境界を満たすために、コンテンツの一部は切り取られる可能性があります。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeRedraw
setNeedsDisplayメソッドを呼び出すことによって、境界が変更された時にビューを再表示します。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeCenter
同じ比率を維持し、ビューの境界内でコンテンツを中央に配置します。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeTop
ビューの境界内で上端に揃えてコンテンツを中央に配置します。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeBottom
ビューの境界内で下端に揃えてコンテンツを中央に配置します。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeLeft
ビューの左端にコンテンツを揃えます。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeRight
ビュー濃淡にコンテンツを揃えます。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeTopLeft
ビューの左上角にコンテンツを揃えます。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeTopRight
ビューの右上角にコンテンツを揃えます。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeBottomLeft
ビューの左下角にコンテンツを揃えます。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewContentModeBottomRight
ビューの右下角にコンテンツを揃えます。
iOS 2.0以降で利用可能
UIView.hで宣言

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h


UIViewAnimationTransition

アニメーションブロック内のビューに適用する遷移を指定します。

typedef enum {
    UIViewAnimationTransitionNone,
    UIViewAnimationTransitionFlipFromLeft,
    UIViewAnimationTransitionFlipFromRight,
    UIViewAnimationTransitionCurlUp,
    UIViewAnimationTransitionCurlDown,
} UIViewAnimationTransition;

定数

UIViewAnimationTransitionNone
遷移を指定しません。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewAnimationTransitionFlipFromLeft
垂直軸を中心にビューが左から右に反転する遷移です。
ビューの左側が手前に、右側が奥に向かって移動します。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewAnimationTransitionFlipFromRight
垂直軸を中心にビューが右から左に反転する遷移です。
ビューの右側が手前に、左側が奥に向かって移動します。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewAnimationTransitionCurlUp
ビューの下部から上へ巻き上げる遷移を行います。
iOS 2.0以降で利用可能
UIView.hで宣言

UIViewAnimationTransitionCurlDown
ビューの上部から下へ巻き下げる遷移を行います。
iOS 2.0以降で利用可能
UIView.hで宣言

利用可能
iOS 2.0以降で利用可能

宣言
UIView.h



参考文献

UIView Class Reference






QuietControl 30 wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
04 | 2017/05 | 06
Sun Mon Tue Wed Thu Fri Sat
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

QuietControl 30 wireless headphones
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR