mNo edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[UIView]] is the root class of all UI elements. | [[UIView]] is the root class of all UI elements. | ||
== | == Getting View Hierarchy Info == | ||
There are 2 ways of getting the view hierarchy info, the "human readable" <tt>-[UIView recursiveDescription]</tt> and "machine readable" <tt>-[UIView scriptingInfoWithChildren]</tt>. | |||
=== -recursiveDescription === | === -recursiveDescription === | ||
Line 24: | Line 25: | ||
This function returns an NSDictionary with contains some information e.g. geometry, class name, etc. | This function returns an NSDictionary with contains some information e.g. geometry, class name, etc. | ||
== Animation Blocks == | |||
{{see|UIViewAnimationState}} | |||
[http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/WindowsandViews/WindowsandViews.html#//apple_ref/doc/uid/TP40007072-CH8-SW11 Animation blocks] are implemented by the UIViewAnimationState class with the following correspondences: | |||
{| class="wikitable" | |||
|- | |||
! UIView methods | |||
! Equivalent call | |||
|- | |||
| <tt>[UIView beginAnimations:</tt>''identifier''<tt> context:</tt>''context''<tt>];</tt> | |||
| <tt>[UIViewAnimationState pushViewAnimationState:</tt>''identifier''<tt> context:</tt>''context''<tt>];</tt> | |||
|- | |||
| <tt>[UIView commitAnimations];</tt> | |||
| <tt>[UIViewAnimationState popAnimationState];</tt> | |||
|- | |||
| <tt>[UIView setAnimationStartDate:</tt>''date''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_start = [</tt>''date''<tt> timeIntervalSinceReferenceDate];</tt> | |||
|- | |||
| <tt>[UIView setAnimationsEnabled:</tt>''enabled''<tt>];</tt> | |||
| <tt>__animate = </tt>''enabled''<tt>;</tt> | |||
|- | |||
| <tt>[UIView setAnimationDelegate:</tt>''delegate''<tt>];</tt> | |||
| <tt>if (__currentViewAnimationState->_delegate != </tt>''delegate''<tt>) {<br /> [__currentViewAnimationState->_delegate release];<br /> __currentViewAnimationState->_delegate = [</tt>''delegate''<tt> retain];<br />}</tt> | |||
|- | |||
| <tt>[UIView setAnimationWillStartSelector:</tt>''selector''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_willStartSelector = </tt>''selector''<tt>;</tt> | |||
|- | |||
| <tt>[UIView setAnimationDidStopSelector:</tt>''selector''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_didEndSelector = </tt>''selector''<tt>;</tt> | |||
|- | |||
| <tt>[UIView setAnimationDuration:</tt>''duration''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_duration = </tt>''duration''<tt>;</tt> | |||
|- | |||
| <tt>[UIView setAnimationDelay:</tt>''delay''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_delay = </tt>''delay''<tt>;</tt> | |||
|- | |||
| <tt>[UIView setAnimationCurve:</tt>''curve''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_curve = </tt>''curve''<tt>;</tt> | |||
|- | |||
| <tt>[UIView setAnimationRepeatCount:</tt>''repeatCount''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_repeatCount = </tt>''repeatCount''<tt>;</tt> | |||
|- | |||
| <tt>[UIView setAnimationRepeatAutoreverses:</tt>''autoreverses''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_autoreverses = </tt>''autoreverses''<tt>;</tt> | |||
|- | |||
| <tt>[UIView setAnimationBeginsFromCurrentState:</tt>''value''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_useCurrentLayerState = </tt>''value''<tt>;</tt> | |||
|- | |||
| <tt>[UIView setAnimationTransition:</tt>''transVal''<tt> forView:</tt>''container''<tt> cache:</tt>''cache''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_transition = </tt>''transVal''<tt>;<br />__currentViewAnimationState->_transitionView = [</tt>''container''<tt> retain];<br />__currentViewAnimationState->_cacheTransition = </tt>''cache''<tt>;</tt> | |||
|- | |||
| <tt>[UIView areAnimationsEnabled];</tt> | |||
| <tt>__animate;</tt> | |||
|} | |||
In above, <tt>__currentViewAnimationState</tt> is a global variable, which is a UIViewAnimationState. This value is automatically updated after calling +pushViewAnimationState:context: and +popAnimationState. NULL checks were omitted in the above codes for simplicity. | |||
There are also a few undocumented methods: | |||
{| class="wikitable" | |||
|- | |||
! UIView method | |||
! Equivalent call | |||
|- | |||
| <tt>[UIView beginAnimations:</tt>''identifier''<tt>];</tt> | |||
| <tt>[UIView beginAnimations:</tt>''identifier''<tt> context:NULL];</tt> | |||
|- | |||
| <tt>[UIView _pendingAnimations];</tt> | |||
| <tt>__currentViewAnimationState != nil;</tt> | |||
|- | |||
| <tt>[UIView setAnimationPosition:</tt>''position''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_position = </tt>''position''<tt>;</tt> | |||
|- | |||
| <tt>[UIView disableAnimation];</tt> | |||
| <tt>__animate = NO;</tt> | |||
|- | |||
| <tt>[UIView enableAnimation];</tt> | |||
| <tt>__animate = YES;</tt> | |||
|- | |||
| <tt>[UIView setAnimationFrameInterval:</tt>''interval''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_frameInterval = </tt>''interval''<tt>;</tt> | |||
|- | |||
| <tt>[UIView setAnimationStartTime:</tt>''time''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_start = </tt>''time''<tt>;</tt> | |||
|- | |||
| <tt>[UIView setAnimationRoundsToInteger:</tt>''rounds''<tt>];</tt> | |||
| <tt>__currentViewAnimationState->_roundsToInteger = </tt>''rounds''<tt>;</tt> | |||
|} | |||
There are also a few equivalent (probably deprecated) selectors: | |||
* +endAnimations = +commitAnimations | |||
* +setAnimationAutoreverses: = +setAnimationRepeatAutoreverses: | |||
* +setAnimationFromCurrentState: = +setAnimationBeginsFromCurrentState: | |||
== References == | == References == | ||
* Official documentation: | * Official documentation: {{sdklink|UIKit|UIView}} | ||
{{IPFHeader|UIKit|3=2}} | |||
{{ |
Revision as of 09:59, 5 November 2009
UIView is the root class of all UI elements.
Getting View Hierarchy Info
There are 2 ways of getting the view hierarchy info, the "human readable" -[UIView recursiveDescription] and "machine readable" -[UIView scriptingInfoWithChildren].
-recursiveDescription
Signature | -(NSString*)recursiveDescription; |
---|---|
Available in | 3.0 – 3.1 |
Returns the description of the view and its subviews.
Example output:
<UIWebView: 0x4116bb0; frame = (0 100; 320 230); layer = <CALayer: 0x4116c20>> <UIScroller: 0x411e110; frame = (0 0; 320 230); clipsToBounds = YES; autoresize = H; layer = <CALayer: 0x411e4d0>> <UIImageView: 0x411f460; frame = (0 0; 54 54); transform = [-1, 0, -0, -1, 0, 0]; alpha = 0; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x411f490>> <UIWebDocumentView: 0x4812c00; frame = (0 0; 320 230); layer = <UIWebLayer: 0x41171c0>>
-scriptingInfoWithChildren
Signature | -(NSDictionary*)scriptingInfoWithChildren; |
---|---|
Available in | 2.0 – 3.1 |
This function returns an NSDictionary with contains some information e.g. geometry, class name, etc.
Animation Blocks
Animation blocks are implemented by the UIViewAnimationState class with the following correspondences:
UIView methods | Equivalent call |
---|---|
[UIView beginAnimations:identifier context:context]; | [UIViewAnimationState pushViewAnimationState:identifier context:context]; |
[UIView commitAnimations]; | [UIViewAnimationState popAnimationState]; |
[UIView setAnimationStartDate:date]; | __currentViewAnimationState->_start = [date timeIntervalSinceReferenceDate]; |
[UIView setAnimationsEnabled:enabled]; | __animate = enabled; |
[UIView setAnimationDelegate:delegate]; | if (__currentViewAnimationState->_delegate != delegate) { [__currentViewAnimationState->_delegate release]; __currentViewAnimationState->_delegate = [delegate retain]; } |
[UIView setAnimationWillStartSelector:selector]; | __currentViewAnimationState->_willStartSelector = selector; |
[UIView setAnimationDidStopSelector:selector]; | __currentViewAnimationState->_didEndSelector = selector; |
[UIView setAnimationDuration:duration]; | __currentViewAnimationState->_duration = duration; |
[UIView setAnimationDelay:delay]; | __currentViewAnimationState->_delay = delay; |
[UIView setAnimationCurve:curve]; | __currentViewAnimationState->_curve = curve; |
[UIView setAnimationRepeatCount:repeatCount]; | __currentViewAnimationState->_repeatCount = repeatCount; |
[UIView setAnimationRepeatAutoreverses:autoreverses]; | __currentViewAnimationState->_autoreverses = autoreverses; |
[UIView setAnimationBeginsFromCurrentState:value]; | __currentViewAnimationState->_useCurrentLayerState = value; |
[UIView setAnimationTransition:transVal forView:container cache:cache]; | __currentViewAnimationState->_transition = transVal; __currentViewAnimationState->_transitionView = [container retain]; __currentViewAnimationState->_cacheTransition = cache; |
[UIView areAnimationsEnabled]; | __animate; |
In above, __currentViewAnimationState is a global variable, which is a UIViewAnimationState. This value is automatically updated after calling +pushViewAnimationState:context: and +popAnimationState. NULL checks were omitted in the above codes for simplicity.
There are also a few undocumented methods:
UIView method | Equivalent call |
---|---|
[UIView beginAnimations:identifier]; | [UIView beginAnimations:identifier context:NULL]; |
[UIView _pendingAnimations]; | __currentViewAnimationState != nil; |
[UIView setAnimationPosition:position]; | __currentViewAnimationState->_position = position; |
[UIView disableAnimation]; | __animate = NO; |
[UIView enableAnimation]; | __animate = YES; |
[UIView setAnimationFrameInterval:interval]; | __currentViewAnimationState->_frameInterval = interval; |
[UIView setAnimationStartTime:time]; | __currentViewAnimationState->_start = time; |
[UIView setAnimationRoundsToInteger:rounds]; | __currentViewAnimationState->_roundsToInteger = rounds; |
There are also a few equivalent (probably deprecated) selectors:
- +endAnimations = +commitAnimations
- +setAnimationAutoreverses: = +setAnimationRepeatAutoreverses:
- +setAnimationFromCurrentState: = +setAnimationBeginsFromCurrentState:
References
- Official documentation: UIView
- Header: http://github.com/kennytm/iphone-private-frameworks/blob/master/UIKit/UIView2.h