Graphics Reference
In-Depth Information
Listing 7.7 Using presentationLayer to Determine Current Layer Position
@interface ViewController ()
@property ( nonatomic , strong ) CALayer *colorLayer;
@end
@implementation ViewController
- ( void )viewDidLoad
{
[ super viewDidLoad ];
//create a red layer
self .colorLayer = [ CALayer layer ];
self .colorLayer. frame = CGRectMake ( 0 , 0 , 100 , 100 );
self .colorLayer. position = CGPointMake ( self . view . bounds . size . width / 2 ,
self . view . bounds . size . height / 2 );
self .colorLayer. backgroundColor = [ UIColor redColor ]. CGColor ;
[ self . view . layer addSublayer : self .colorLayer];
}
- ( void )touchesBegan:( NSSet *)touches withEvent:( UIEvent *)event
{
//get the touch point
CGPoint point = [[touches anyObject ] locationInView : self . view ];
//check if we've tapped the moving layer
if ([ self .colorLayer. presentationLayer hitTest :point])
{
//randomize the layer background color
CGFloat red = arc4random () / ( CGFloat ) INT_MAX ;
CGFloat green = arc4random () / ( CGFloat ) INT_MAX ;
CGFloat blue = arc4random () / ( CGFloat ) INT_MAX ;
self .colorLayer. backgroundColor = [ UIColor colorWithRed :red
green :green
blue :blue
alpha : 1.0 ]. CGColor ;
}
else
{
//otherwise (slowly) move the layer to new position
[ CATransaction begin ];
[ CATransaction setAnimationDuration : 4.0 ];
self .colorLayer. position = point;
Search WWH ::




Custom Search