iOSéçºè ã®HeximalïŒPavelïŒãtimeraã¢ãŒããã¯ãã£ã«ã€ããŠèª¬æããŸã ã圌ã¯ä»ããèªãã§ããªãã®ã§ã圌ã®æçš¿ãå ¬éããŠããŸãã
->ãã®æçš¿ã§ã¯ãTimeraãšããèšèããéåžžã«ãªãªãžãã«ã®Timeramaãšããååã§ãèå³æ·±ããææãªãããžã§ã¯ããžã®ãããããªåå ã«ã€ããŠæžããŠãããŸãã 幞ããªããšã«ãç§ã¯ã¹ã¿ãŒãã¢ãã管çè ãiOSéçºè ã®æ¬ å¡ã®åè£ãæ¢ããŠãããŸãã«ãã®ç¬éã«ãæ°ããéçºã®å°å¹³ç·ãæ¢ã掻çºãªæ®µéã«ããŸããã ãããžã§ã¯ãã®æ¬è³ªã¯éåžžã«ã·ã³ãã«ã§ã-èŠèŠçãªãã¬ãŒã³ããŒã·ã§ã³ãšã¢ãŒããã¯ãã£ã®èª¬æã¯ãã«ããã®äžã®æçš¿ã®ã¡ã€ã³ã€ã©ã¹ãã§èŠãããšãã§ããŸãã

ãŠãŒã¶ãŒã«ã¯ãéå»ã®åçãšã¹ããŒããã©ã³ã®ã«ã¡ã©ã§æ®åœ±ããåçãçµã¿åãããŠãäžæçãªãã³ãã«ãäœæããããŒã«ã衚瀺ãããŸãã ç§ã¯ãã®ã¢ã€ãã¢ãæ¬åœã«å¥œãã§ãããã«éçºããã»ã¹ã«çµ±åãå§ããŸããããã®éãå€ãã®å°é£ã§èå³æ·±ãã¿ã¹ã¯ã«çŽé¢ããŠå æããªããã°ãªããŸããã§ããã
ãŸããã°ããŒãã«ã¢ãŒããã¯ãã£ã«ã€ããŠå°ãã話ãããããšæããŸãã äžå€®ãªã³ã¯ã¯ãããã¯ãšã³ããããã³ããšã³ããããŒã¿ã¹ãã¬ãŒãžãweb-apiã®æ©èœãå®è¡ãããµãŒããŒã§ãã ãµãŒããŒã¹ã¿ããã£ã³ã°ãšã¯é¢ä¿ããªãã®ã§ã詳现ã«ã¯èª¬æããŸããã å®çšŒåããŒãžã§ã³ã¯Microsoftã®ã¯ã©ãŠããã¹ãã£ã³ã°ã§å®è¡ãããŠãããšããèšããããµãŒããŒåŽã®å®è£ ã«ã¯ãçŸåšã®å€å žçãªã¹ã¿ãã¯ã§ããIIS + MSSQL + ASP.NETã䜿çšããŸãã
ããã³ããšã³ãã·ã¹ãã ïŒãŠã§ããµã€ãwww.timera.com ïŒã¯ããŠãŒã¶ãŒã«ä»ã®ãŠãŒã¶ãŒã®åçã衚瀺ããæ©èœãæäŸãããœãŒã·ã£ã«ãããã¯ãŒã¯ã®æ©èœãåããŠããŸããä»ã®ãœãŒã·ã£ã«ãããã¯ãŒã¯ã«ã¯ã奜ããªæ©èœãã³ã¡ã³ããæ®ãæ©èœãå ±ææ©èœããããŸãã ãŸãããŠã§ããµã€ãã®ãŠãŒã¶ãŒã¯å€ãåçãã¢ããããŒãããæ©äŒããããŸãã ããã¯äœãæå³ããäœã®ããã§ããïŒ ããã«ããã«ã€ããŠã
Webãµã€ãã«å ããŠãã¢ãŒããã¯ãã£ã®äžå¯æ¬ ãªéšåã¯ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã§ãã ä»æ¥ã§ã¯ãæã人æ°ã®ãã2ã€ã®ãã©ãããã©ãŒã -ãã¡ãããAndroidãšiOSã«å®è£ ãããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ã®æ©èœã¯ãWebãµã€ããæã€ããšã®ã§ããªãå¯äžã®æ©èœãé€ããWebãµã€ãã®æ©èœãã»ãŒå®å šã«åçŸããŸãã ããã¯æéã«ã€ããŠã§ãã
ãã¿ã€ããŒããšããçšèªã¯ãæŽå²çãªã³ã©ãŒãžã¥ã®ãžã£ã³ã«ãæãããã«äœ¿çšãããŸãã 圌ã¯æ°ãããã®ã§ã¯ãããŸããã çµå±ã®ãšããããããã®äœåã¯é·ãéã€ã³ã¿ãŒãããããµãŒãã£ã³ããŠããããããã®å€ãã¯éåžžã«ãã€ã©ã«ã«ãªããŸããã 1906幎ã®ãµã³ãã©ã³ã·ã¹ã³ã§ã®å°éã«ã€ããŠã®ã¹ã©ã€ãã·ã§ãŒã§ãSergei Larenkovã®ãããžã§ã¯ã "Time of Connections"ãŸãã¯Sean Claverã®ãããžã§ã¯ããæãåºãã ãã§ãã å®éãã¢ããªã±ãŒã·ã§ã³ã®ååã¯ããããžã§ã¯ãã®åµèšè ã§ããDavid Webbã«ãã£ãŠé ããããã®ã§ãåã«ãã¿ã€ããŒããšããçšèªãççž®ãããã®ã§ãã ããã§ãã¿ã€ããŒæ®åœ±èªäœã®ä»çµã¿ãšããã®ããã»ã¹ãTimeraã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã§ã©ã®ããã«å®è£ ãããããå°ã説æããŸãã
ãšããã§ã«å¡ã®å€ãåçããããšããŸãã å人çã«ã¯1889幎ã®åçã奜ãã§ããã®äžã«å¡ãæåã®ã¬ãã«ãŸã§ãã建ãŠãããŠããŸããã ã¿ã€ã ã©ã¹ãããã·ã§ãããäœæããã«ã¯ãå€ãåçãæ®åœ±ãããè§åºŠãèŠã€ããåçãæ®ããã³ã³ãã¥ãŒã¿ãŒã«ãè¿œãè¶ãããã°ã©ãã£ãã¯ãšãã£ã¿ãŒã§ããŸããŸãªãã£ã«ã¿ãŒãšã°ã©ããŒã·ã§ã³ã䜿çšããŠçµã¿åãããå¿ èŠããããŸãã ã¿ã¹ã¯ã¯ãããšãã°ããã¹ãŠã®äººã®ããã§ã¯ãããŸããã ããããTimeramaã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ãŠãŒã¶ãŒã«ãšã£ãŠæé ãªäŸ¡æ Œã§ãã å šäœã®ããã»ã¹ã¯å¯èœãªéãç°¡ç¥åãããŠãããéåžžã«é¢çœããã«èŠããããšãããããŸãïŒå°ãªããšããç§ã¯å人çã«ããèããŠããŸãïŒã
ãŠãŒã¶ãŒã¯ãããå Žæã§å©çšå¯èœãªå€ãåçãéããã³ã§è¡šç€ºãããå°å³ã®ç»é¢ãéããŸãã åœç¶ããã®ã¢ããªã±ãŒã·ã§ã³ã«ããããŠãŒã¶ãŒãèªåçã«ç¹å®ãããªããžã§ã¯ãã衚瀺ããããšãã§ããŸãã ãŠãŒã¶ãŒãã¿ã€ããŒã°ã©ãã®å¯Ÿè±¡ã決å®ãããšãã«ã¡ã©ä»ãã®ç»é¢ãèµ·åããŸãã ãã®ç»é¢ã«ã¯ãã«ã¡ã©ããã®ã©ã€ãç»åãšå€ãåçã®åéæç»åãåæã«è¡šç€ºãããŸãïŒéæ床ãå€æŽã§ããŸãïŒã ãŠãŒã¶ãŒã¯ãç»é¢äžã®å€ãåçã移åããããã¿ããã¹ã¯ãªãŒã³æè¡ã®æ©èœã䜿çšããŠãµã€ãºãå€æŽãããããããšãã§ããŸãã åçãæ®åœ±ããããšãããæ£ç¢ºãªç»é²ç»é¢ã衚瀺ãããŸãã


æãèå³æ·±ãã®ã¯ãã¿ã€ã ãã³ãã«ïŒã¿ã€ã ãã³ãã«ïŒãæ§æãããŠãã3çªç®ã®ç»é¢ããå§ãŸããŸãã ããã§ããŠãŒã¶ãŒã¯æ¬¡ã®ãããªããŸããŸãªããŒã«ã䜿çšããŠããŒã«ããŒã«ã¢ã¯ã»ã¹ã§ããŸãã
-ã¿ã€ã ãã³ãã«ã®å¢çã®éæ床ãšã·ã£ãŒããã¹ã®ã¹ã©ã€ããŒïŒéæ床ãšæãããïŒ
-軞ã®åšãã®ã¿ã€ã ãã³ãã«ã®å転
-ã¹ã¯ãããšåŒã°ããæ©èœïŒå€ãåçãšæ°ããåçã亀æããŸããã€ãŸããå€ãåçã¯èæ¯ã«ç§»åããæ°ããåçã¯åé¢ã«ç§»åããŸãïŒ
-ã¿ã€ã ãã³ãã«ã®åœ¢ç¶ã®å€æŽïŒæ¥å圢ãŸãã¯é·æ¹åœ¢
-åç©«
ãã¹ãŠã®ã¢ãŒãã§ãç»é¢ãžã§ã¹ãã£ãŒã䜿çšããŠã¿ã€ã ãã³ãã«ã®ãµã€ãºãšäœçœ®ãå€æŽã§ããŸãã
ãŸã°ãã«èŠããã§ããããïŒ ããããããããããã®ããŒã«ã®ã»ããã䜿çšããŠããéåžžã«åªããæ§æãäœæãããŸãã ããã«å ããŠããã®æ©èœãæ¡åŒµããäºå®ã§ããããã«ã€ããŠã¯ååãªã¢ã€ãã¢ããããŸãã
ç·šéåŸãçµæã®ç»åã衚瀺ãããŸãããµãŒããŒã«ã¢ããããŒããããããœãŒã·ã£ã«ãããã¯ãŒã¯ã§å ±æãããã§ããŸãã ãµãŒããŒã«ã¢ããããŒããããšãã«ãäœæ¥ãå ¬éããããªãå Žåã¯ããã©ã€ãã·ãŒãã©ã°ãèšå®ã§ããŸãã
ããã§ãäž»ãªãŠãŒã¹ã±ãŒã¹ïŒã¿ã€ããŒã°ã©ããã£ã³ã°ïŒã®äœæäžã«çããå°é£ã«ã€ããŠãããã€ãã®ãã¥ã¢ã³ã¹ããäŒãããããšæããŸãã
ãŸããäžå¿«ãªé©ãã¯ãUIDeviceOrientationåã®2ã€ã®å€ã®ååšã§ããã 以åã¯ãiOSã®å é床èšãšããã€ã¹ã®åãã®æŠå¿µã䜿çšããŠãããããå¯èœãªããã€ã¹ã®åãã®æ°ã¯4ã€ã§ããïŒUIDeviceOrientationPortraitãUIDeviceOrientationPortraitUpsideDownãUIDeviceOrientationLandscapeLeftãUIDeviceOrientationLandscapeRightã å€ãåçãäžäžéã«ãªã£ããã暪ã«ãªã£ããããªãããã«ããªãŒããŒã¬ã€ç»åãé©åã«æ¹åã¥ããå¿ èŠããããããæ®åœ±ç»é¢ã§ã¯ããã€ã¹ã®æ¹åãéåžžã«éèŠã§ãã å€æããããã«ãããã€ã¹ã«ã¯UIDeviceOrientationFaceUpãšUIDeviceOrientationFaceDownã®2ã€ã®äœçœ®ããããŸãã ãã®äºå®ãèªèããããã°ã©ã ã®äžé©åãªåäœã®çç±ãèªèããããã«ãå€ãã®äººçæéãè²»ããããŸããã
æ®åœ±ç»é¢ã«é¢é£ãããã1ã€ã®èå³æ·±ãç¹ã¯ãããã€ã¹ã®åŽé¢ã«ããé³éãã¿ã³ã®åé¡ã§ããæšæºã®ã«ã¡ã©ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãé³éãã¿ã³ãæŒããšã·ã£ãã¿ãŒãäœåããéåžžã«äŸ¿å©ã§ãã
ããã«ãæè¡ã®åé¡ã äœããã®çç±ã§ãæ®åœ±ç»é¢ã§ãããã®ãã¿ã³ã¯ãã©ããªããªãã¯ãå®è¡ããŠãåå¿ãåŒãèµ·ããããã¡ãã£ã¢ã·ã¹ãã ããã®éç¥ã®åŒ·å¶çãªããªã¹ãã³ã°ãã圹ã«ç«ããªãã£ãã
ããã¯ã»ãŒãã®ããã«è¡ãããŸãã ViewControllerã¯ããµãã¹ã¯ã©ã€ãããŠããªã¥ãŒã å€æŽéç¥ãåä¿¡ããŸãã
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(volumeChanged:)
name:@"AVSystemController_SystemVolumeDidChangeNotification"
object:nil];
åŸã§å€æããããã«ãããã¯ãŠãŒã¶ãŒãå€ãåçã®éæ床ãå€æŽããéåžžãããèŠãããšãã§ããoverlayViewã䜿çšããŠããããã§ãã ä»ã®äžè¬çãªåçã¢ããªã±ãŒã·ã§ã³ã§ãããŸã£ããåãåäœãèŠã€ãããŸããã åæã«ãåçæ®åœ±ã«æšæºã®ã³ã³ãããŒã«ã䜿çšããã¢ããªã±ãŒã·ã§ã³ã¯ãé³éãã¿ã³ãæŒããŠãåå¿ããããŸããã
æ倧ã®éçºæéã¯ãã¿ã€ã ãã³ãã«å¹æã®ããç»é¢ã®å®è£ ã«è²»ããããŸããã ã¿ã€ã ãã³ãã«ã¢ã«ãŽãªãºã ã¯ãå ã®ç»åããåŸé ã¹ãã³ã·ã«ãæžç®ããæ¹æ³ã«åºã¥ããŠããŸãããã¹ã¯äžã®ç»åãã¯ã»ã«ãæãã»ã©ããã¹ã¯ãããç»åã®åããã¯ã»ã«ã®éæ床å€ãäœããªããŸãã ãã¹ãŠã®éæ³ã¯ãæšæºã®CoreGraphicsãã¬ãŒã ã¯ãŒã¯ãšCGImageCreateWithMaské¢æ°ã䜿çšããŠå®è£ ãããŸãããã®é¢æ°ã¯ãäžèšã®2ã€ã®ç»åãCGImageRefãªããžã§ã¯ããšããŠå ¥åã«éä¿¡ããŸãã
ã¿ã€ããŒæ®åœ±ã®åœ¢æã¯3段éã§è¡ãããŸãã èæ¯ã®ç»åã«ãç»åAããåæ¯ã®ç»åã«ãç»åBãã®æå®ã䜿çšããããšã«åæããŸãããã
1.ã°ã©ããŒã·ã§ã³ãšããžãæã€é·æ¹åœ¢ã®ãã¹ã¯ãæç»ãããã€ã¡ãŒãžBã«é©çšãããŸããããã¯ãäžæçãªãã³ãã«ãã©ãã§ãæ¥æ¿ã«åããªãããã«ããããã«è¡ãããŸããã ããšãã°ãå°å¹³ç·ãæ£ãã°ã£ãŠããå ŽåããŠãŒã¶ãŒã¯ãç»åBããå転ãããããšãã§ããŸãã ãããã£ãŠããã¹ã¯ã¯æ¬¡ã®ãã©ã¡ãŒã¿ãŒã«åºã¥ããŠåœ¢æãããŸãããç»åBãã®ãµã€ãºããç»åBãã®å転è§åºŠãå¢çç·ã®ãŒããéïŒã¹ã©ã€ããŒã§èª¿æŽå¯èœïŒã çµæã®ãã¹ã¯ã¯ãç»åBãããå·®ãåŒãããçµæã¯ãŒããããšããžãæã€ãç»åBãã«ãªããŸãã

ç§ã¯ãã°ã©ãã£ãã¯ã³ã³ããã¹ãã®åº§æšè¡åã®å€æãéããŠåãCoreGraphicsã䜿çšããŠå®è¡ãããã°ã©ããŒã·ã§ã³ã®åºãããå€§å¹ ã«èª¿æŽããå¿ èŠããããŸããã
CGFloat angleInRadians = angle * (M_PI / 180);
CGContextRotateCTM(bmContext, angleInRadians);
åæã«ãäºæãã¬å¹æãçºçããŸãããããã©ã«ãã§ã¯ãããŒãžã¯ç»åã®å·Šäžãå転ããŠããããã§ãã

ãã³ãæ€çŽ¢ã倱æããåŸãstackoverflowã«ã€ããŠã質åããŸããã ããããåçãåŸãããªãã£ãããã解決çãçµéšçã«èŠã€ããèªåã®è³ªåã«å¯Ÿããåçãæ®ããŸããïŒhttp://stackoverflow.com/questions/19219855/uiimageview-get-transformed-uiimageïŒ
ãã1ã€ã®é©ãã¯ããã¹ã¯ã«é·æ¹åœ¢ã®ã°ã©ããŒã·ã§ã³ãæç»ããæ¢è£œã®æ¹æ³ããªãããšã§ãïŒå³ã®ããã«ïŒã CoreGraphicsã«ã¯æ¥åã®è§£æ±ºçããããŸãããããã¯ç§ãçºæããªããã°ãªããªãã£ãäžžããšããžãæã€é·æ¹åœ¢ã®ãã®ã§ããïŒhttp://stackoverflow.com/questions/18918382/coregraphics-rectangle-gradient-å¥ã®çãèªäœïŒã
2.ã°ã©ããŒã·ã§ã³ãã¹ã¯ãæç»ããã第1段éã®åŠçã®çµæãšããŠååŸããããç»åBãã«é©çšãããŸãã æåã®æ®µéãšã¯ç°ãªãããŠãŒã¶ãŒã¯ãã¹ã¯ã®ã¿ã€ããæå®ã§ããŸãïŒé·æ¹åœ¢ãŸãã¯æ¥å圢ã«å ããŠãåããã¹ã¯å¯žæ³ãå転è§åºŠãå¢çã®ãŒããã®çšåºŠã ãŠãŒã¶ãŒã¯ãç»é¢äžã®æã§ãã¹ã¯ã®ãµã€ãºãšäœçœ®ãå€æŽããŸãã ãããã£ãŠãæéãã³ãã«ã®ç»åã圢æãããŸãã

3.æåŸã®æ®µéã§ãçµæã®ã¿ã€ã ãã³ãã«ã®ç»åã¯ããç»åAãã®ç®çã®åº§æšã«æç»ãããŸãã

CoreGraphicsã¯äžçã§æãçç£çãªãã®ãšã¯ã»ã©é ãããšãèšããªããã°ãªããŸãããããã¯ãiPhone 4以äžããå§ãŸãå€ãããã€ã¹ã§ç¹ã«é¡èã§ãã ãã®ç¹ã§ãã¿ã€ããŒæ®åœ±ã®æ©èœãæé©åããããã«å€ãã®å¯Ÿçãè¬ããããŸããã ããããããã«ã€ããŠã¯ç¬¬2éšã§èª¬æããŸãã
ç§ã¯ããªãã«èå³ãããããšãé¡ã£ãŠããŸãã ã¢ããªãããŠã³ããŒãã ãè©äŸ¡ããŠãã£ãŒãããã¯ãæžããŠãã ããã
ããªããããã奜ãã°ãç§ã¯æåŸ ãæåŠããŸããã ã³ã¡ã³ãã«è¿ä¿¡ããã¢ã«ãŠã³ãããå ¬éããŸãã
質åãã³ã¡ã³ããåŸ ã£ãŠããŸãã