Source code download: http://download.csdn.net/detail/x1135768777/4281079
-(Void) viewdidload {[Super viewdidload]; [[[self view] layer] setbackgroundcolor: [[uicolor blackcolor] cgcolor]; uiimage * balloon = [uiimage imagenamed: @ "1.png"]; // change the name to calayer * toplayer = [[calayer alloc] init]; [toplayer setbounds: cgrectmake (0.0f, 0.0f, 320.0, 240)]; [toplayer setposition: cgpointmake (160.0f, 1200000f)]; [toplayer setcontents :( ID) [Balloon cgimage]; [[self view] layer] addsublayer: toplayer]; calayer * reflectionlayer = [[calayer alloc] init]; [reflectionlayer setbounds: cgrectmake (0.0f, 0.0f, 320.0, 240.0)]; [reflectionlayer setposition: cgpointmake (160.0f, callback)] [reflectionlayer setcontents: [toplayer contents]; [reflectionlayer setvalue: [nsnumber numberwithfloat: 180.0] forkeypath: @ "transform. rotation. X "]; implements * gradientlayer = [[cagradientlayer alloc] init]; [gradientlayer setbounds: [reflectionlayer bounds]; [gradientlayer setposition: cgpointmake ([reflectionlayer bounds]. size. width/2, [reflectionlayer bounds]. size. height/2)]; [gradientlayer setcolors: [nsarray arraywithobjects: (ID) [[uicolor clearcolor] cgcolor], (ID) [[uicolor blackcolor] cgcolor], nil]; [gradientlayer setstartpoint: cgpointmake (0.5, 0.35)]; [gradientlayer setendpoint: cgpointmake (0.5, 1.0)]; [reflectionlayer setmask: gradientlayer]; [[self view] layer] addsublayer: reflectionlayer]; // do any additional setup after loading the view, typically from a nib .}