Qttyãšããå°ããªã¢ããªã±ãŒã·ã§ã³ãéçºãããã£ãã®ã§ãã ã¢ããªã±ãŒã·ã§ã³ã¯ãåçãæ®åœ±ããŠäžé£ã®ãã£ã«ã¿ãŒãé©çšãããã®åãåçãVKãããã¡ã€ã«ã®ã¡ã€ã³åçãšããŠå
¬éã§ããå¿
èŠããããŸãã
èè
ã¯
ãWWDC 2014ã®223åç®ã®ã»ãã·ã§ã³ã§è¡ã£ãããã«ããããã¿ã€ããéããŠãã¹ãŠãå®è¡ããããšããŸãã
ãããžã§ã¯ãã®èª¬æ
æåã¯ã説æã¯æ¬¡ã®ããã«ãªããŸããã
ã¢ããªã±ãŒã·ã§ã³ã¯VKã§ã®ã¿åäœãïŒä»ã®ãšããïŒããŠãŒã¶ãŒãåçãæ®ã£ãŠãVKã®ç®çã®ã¢ã«ãã ã«ãããããããã€ãã®ãã£ã«ã¿ãŒã䜿çšããŠããã«ã¢ããããŒãã§ããããã«ããŸãã
äž»ãªæ©èœïŒ
1.ãã©ãã¢ã«ãã ã®ãªã¹ãã衚瀺ãã
2.éžæããã¢ã«ãã ã®åçã衚瀺ãã
3.åçãåé€ããæ©èœ
4.ã¢ã«ãã ãåé€ããæ©èœ
5.ã¢ã«ãã ãäœæããŠã¢ã¯ã»ã¹æš©ãæå®ããæ©èœ
6.åçãæ®ãããã£ã«ã¿ãŒãé©çšããåçãã¢ããããŒãããã¢ã«ãã ãæå®ïŒãŸãã¯ãããã¡ã€ã«ã®ã¡ã€ã³åçãäœæïŒãå Žæãæ·»ä»ãåçã«èª¬æã远å ããŸãã
ç§ã¯ããã«äœããããããšæ±ºããã®ã§ãã»ãšãã©ã®æ©èœãåé€ãããã®ãããªã¢ããªã±ãŒã·ã§ã³ãäœæããŸãããããã«ã€ããŠã¯æåã®æ®µèœã§èª¬æããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯VKã§ã®ã¿åäœãïŒä»ã®ãšããïŒããŠãŒã¶ãŒãåçãæ®ã£ãŠãããããããã€ãã®ãã£ã«ã¿ãŒã䜿çšããŠãVKã«ããã«ã¢ããããŒãã§ããããã«ããŸãã
ãããã¿ã€ãã äž
ç»é¢ã®ã¹ã±ãããäœæããããŸããŸãªã¢ã€ãã¢ãæäŸãããããããããã圢ã§çŽã«æ²èŒããŸãã
æ¿èªç»é¢ããå§ããŸããã æ¿èªãªãã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯åçãåŠçããæå³ããããŸããããã®ãããåçãéå§ãšããŠæ®åœ±ããããã®ç»é¢ã衚瀺ãããªãã·ã§ã³ã¯é€å€ãããŸãã æ¿èªç»é¢ã«ã¯ããŠãŒã¶ãŒãVKã«ãã°ã€ã³ãããŠãŒã¶ãŒã«ä»£ãã£ãŠãªã¯ãšã¹ããè¡ãããšãã§ãããã¿ã³ãã¯ãªãã¯ããåŸããã¿ã³ã®ãããªèŠçŽ ãããã¯ãã§ãã
ç§ãæã£ãŠãããã©ããïŒ


ããããã«ã€ããŠèª¬æããŸãã
1.ã¢ã€ãã¢ã¯ããŠãŒã¶ãŒãç¢æã®ããç¹å®ã®åçã®ã»ãããæã£ãŠãããšãããã®ã§ããïŒå°è±¡ãå人ãšå
±æãããåžžã«é£çµ¡ãåãåããæ¥œããç¬éãå
±æãããªã©ïŒã 以äžã¯èªèšŒãã¿ã³ã§ãã
ãã®ãªãã·ã§ã³ã®çæïŒäœãããããå¿
èŠããããŸãã
èæ¯è²+ç»åã®æç»çšã®ãã©ã³ããšãã®è²ã®éžæãšçµã¿åãããããåžæããè²èª¿ã®ç»åã®éžæã«é¢ãã远å äœæ¥ã
ããçš®ã®ãŠãŒã¶ãŒããã¥ã¢ã«ã®ããã«èŠããŸãã
æ°ã«å
¥ããªãã£ãã
2.æåã®ããŒãžã§ã³ã§ãã¢ã«ãŠã³ããã¹ã¯ããŒã«ããŠããç»åãšãã¹ãŠã®æ°ã衚瀺ãããŠããªãå Žåããã®æ¬ é¥ã¯ä¿®æ£ãããŸããã ãã ããçæã¯åããŸãŸã§ãã
3.ç»åãšãã¿ã³ã ç°¡åã«æããŸãããèæ¯è²ãç»åã®è²ããããã®çµã¿åãããªã©ãå€ãã®çåãçããŸãã ãªãã·ã§ã³ã¯æ¶ããŸããã
4.ããã§ãèæ¯ã¯å€ãã®ãŠãŒã¶ãŒå®çŸ©åçã®ããåçã«èšå®ãããå€ãã®äººãç®ãå·ã€ãããããŠãŒã¶ãŒãäžå®ãç·åŒµãæãããããªãããã«ãåçã«è¿œå ã®ã¬ã€ã€ãŒã远å ã§ããŸãã ãã¿ã³ã¯æ®ããŸãã
ãã®ãªãã·ã§ã³ãäžçªæ°ã«å
¥ã£ãã
ãã¹ãŠã®ã¢ã€ãã¢ãé ããçŽã«ç§»ãããåŸãç§ã¯ãããã®ã¹ã¯ãªãŒã³ãå®éã®èŠçŽ ã§å®éã®ãµã€ãºã§ã¹ã±ããããããšãåŒãåããŸããã ãã¹ãŠãåºèª¿è¬æŒã§è¡ãããŸããã
ãã¹ãŠã®ãªãã·ã§ã³ã¯è¡šç€ºããŸããããã§ããã®ã¯2ã€ã ãã§ãã æåã®2ã€ã®ãªãã·ã§ã³ã®å®è£
æã«ããªãŒãã¹ã«ãŒã䜿çšããŠããã®ãããªå°ããªã¢ããªã±ãŒã·ã§ã³ã«ã¯é¢åããããšããçµè«ã«éããŸããã
èªå¯ç»é¢ã®æåã®äºåãã¥ãŒïŒ


è·å Žã®ååã«ã2ã€ã®éžæè¢ã®ãã¡ã©ã¡ããäžçªå¥œãããå°ããŸããã ãã¹ãŠãæåã«çããã ããã€ãã®ç·ãšå€èгã®ããã«ãå€ãã¯2çªç®ã奜ãã§ã¯ãããŸããã§ããã 圌ãã¯ãã¢ããªã±ãŒã·ã§ã³ãäœã§ãããããã®ç¹å®ã®äººã圌ã誰ã§ããããªã©ãçè§£ã§ããŸããã§ããã
2çªç®ã®ãªãã·ã§ã³ã¯ç Žæ£ãããŸããã
ãã°ããããŠããã®ãããªãªãã·ã§ã³ãçŸããŸããïŒ


æå
ã«ã¯çŽããªãã£ããããæ¿èªã®ããã®UIWebViewã®VK衚瀺ç»é¢ã¯ãKeynoteã§ããã«ã¹ã±ãããããŸããã 倿ãããªãã·ã§ã³ïŒ






åœŒã¯æåã®éžæè¢ã§ç«ã¡æ¢ãŸã£ãã ãéããã/ããã£ã³ã»ã«ããã¿ã³ã䜿çšãããšããããããã«ãåžæã©ããã«è¡šç€ºãããŸããã§ããã ããã«ç°ãªã圱/éæåºŠãšãXãèšå·ã®ãããã¿ã³ã远å ããããšããŸãããããããåºãŠããŸããïŒãã ããã¹ããã«ãŒãã¹ããã«ãŒèŠçŽ ã®ã¢ã€ãã¢ã奜ãã«ãªãå§ããŸããïŒã


ãããã¿ã€ãã³ã°æ®µéã§ã®äž»ãªã¿ã¹ã¯ã¯ãããã°ã©ãã³ã°ãªãã§ã¢ããªã±ãŒã·ã§ã³ãèŠèŠçã«åäœæããããŸããŸãªçš®é¡ã®ã¹ã¯ãªãŒã³ã詊ããŠããŠãŒã¶ãŒã®åå¿ãèŠãŠã
ãã®å¿çã
èãããšã§ã ïŒãããã¿ã€ãã³ã°ã®åææ®µéã§ã¯ãéåžžãã¢ããªã±ãŒã·ã§ã³éçºã®éäžãŸãã¯æåŸã«çºçããŸããïŒã
次ã®ç»é¢ã¯åçç»é¢ã«ãªãããŠãŒã¶ãŒã¯åçãïŒããã³ããŸãã¯ãªã¢ã«ã¡ã©ã䜿çšããŠïŒæ®åœ±ãããã£ã«ã¿ãŒ/ãšãã§ã¯ããé©çšããããã®ç»é¢ã«ç§»åã§ããŸãã
ã¹ã¯ãªãŒã³ãããã°ãåçã¯ãã£ãšé¢çœãã£ãã§ãã ç§ã¯InstagramãèŠãŠäœæ¥ããŸãããå°ãã®éã¯å¥œãã§ã¯ãªãã£ãã®ã§ãããããåé€ããããšã«ããŸããããåæã«èªåçšã«äœããæ¡çšããŸããã
äœãèµ·ãã£ãã®ãïŒåæãªãã·ã§ã³ããææ°ã®ãã®ãŸã§ïŒïŒ



ãã®ç»é¢ã¯ãæãåºæ¬çãªèŠçŽ ä»¥å€ã®ãã®ã§ç
©éã«ãªããããããŸããã§ããããããã£ãŠãäžè¬çã«ããã¹ãŠã®ãªãã·ã§ã³ã¯1ã€ã®ããªãšãŒã·ã§ã³ã§ãã æåã¯ãç»é¢ã®äžéšã«ããŠãŒã¶ãŒã®ã¹ãããã·ã§ããããã£ããã£ããããã¿ã³ã1ã€ïŒ1ã€ã®èŠçŽ ïŒã ããããŸãã ç»åããã£ããã£ããåŸã2ã€ã®è¿œå ãã¿ã³ããµã€ãºå€æŽããšãããã»ã¹ãããã¿ã³ããå察åŽã«ãç§»åãããå¿
èŠããããŸãïŒç§ã®è¡šç€ºã§ã¯ïŒã ã¹ã±ããã®1ã€ã§ãããããã«ãæåã®æ®µéã§ã¯ãã¿ã³ã«ã¯ãYESããšãNOããšããã©ãã«ãããããŸããã§ãããã2çªç®ã®ãªãã·ã§ã³ïŒæåã®ã·ã§ããã2çªç®ã®ç»é¢ïŒã§ãYES / NOã¯ãŸã£ããæçã§ã¯ãªããšæããŸããããåæã«ãã¹ãããã·ã§ããã§äœããããã§ããïŒããšãã質åã衚瀺ããå¿
èŠã¯ãããŸãããã³ã³ããã¹ããããã©ã®ã¢ã¯ã·ã§ã³ãå¿
èŠã§äœãå¿
èŠããæããã ããã§ãã
ç»é¢ã®äžéšã«æåãQããä»ãããã¿ã³ãå°ãäžããŠããã¿ã³ãå°ãèœã¡å§ããã®ã¯ãªãã§ããïŒ çãã¯ç°¡åã§ã-空ãé åãå¢ãããããšãã顿ã ãã®ããã3ã€ã®ç»åïŒ1ç»é¢ïŒã§ããããããã«ãåé€ãããŠããŸãã
Instagramãããã°ãªãããæ¡çšããã ãã§ããªããžã§ã¯ããåçã®äžå€®ã«ããããã«2ã3ã®ã·ã§ãããæ®ãããå Žåã«å¿
èŠã ãšæãããŸããã
ããã¯ã40ã50ååŸã«åŸããã®ã§ãïŒä»¥äžãåç
§ïŒã ããã€ãã®ãã€ã³ãã倿Žãããããã«ããã€ãã®ãã€ã³ãã倿Žãããã¢ã€ãã¢ããããŸãã ãããã¿ã€ãã®ãããã§ãç»åã«ã©ãã£ã¹ãšã«ã¡ã©ã®ãµã€ã³ã眮ãã ãã§ã¯ããŸããããªãããšã«æ°ä»ãããšãã§ããŸãã-ãã®äžã«äœãã眮ãå¿
èŠããããŸãã ããã«ãæåã®è§£æ±ºçã§ãããåçã®å®å
šæ§ãšå°è±¡ã倱ããããããå¹²æžããŸãã
ãã®ãªã³ã¯ã§ãããã¿ã€ãã³ã°ããã»ã¹ã®ãããªãèŠã€ããããšãã§ããŸãã






èŠçŽ ãããŒãã¬ãŒãã¢ãŒãããã©ã³ãã¹ã±ãŒãã¢ãŒãã«ç§»è¡ããéã«ãã¹ããŒã¿ã¹ããŒãåé€ããããšãæ€èšããŸããã
æ¯èŒããïŒ



æ¯èŒããïŒ



æ¯èŒããïŒ



ããããããšãã§ããŸããïŒ


ãããŠãããŒãã¬ãŒãã¢ãŒãã§ã¯ãèŠçŽ ãäžã«ç§»åããŸãã



20ã30ååŸãç§ã¯ãã®ãªãã·ã§ã³ã§åæ¢ããããšã«ããŸããïŒãªãã·ã§ã³ãå¢ããã°å¢ããã»ã©ãéžæè¢ã¯åºããªããŸãïŒã





玫è²ã®ãã¿ã³ãéªéã§ãã ã¯ãªãã¯ãããšã¹ãããã·ã§ããããã£ããã£ãããã¯ãªãã¯ããåŸããŠãŒã¶ãŒã®åã«ãã以äžã®ã¢ã¯ã·ã§ã³ã¯è¡šç€ºãããŸãã-ããã«ãã£ã«ã¿ãŒã衚瀺ãåãæããªã©ã ãã®ç»é¢ããããŠãŒã¶ãŒã¯ã¯ã³ã¯ãªãã¯ã§æ®åœ±ã«è¡ãããšãã§ããŸãã
åçåŠçç»é¢ã®ã¹ã±ãããå§ããŸããã æåã®ããŒãžã§ã³ã¯æ¬¡ã®ãšããã§ãã


ç§ã¯ãã®ãªãã·ã§ã³ã奜ãã§ããããå®è£
ã«è¡ãè©°ãŸã£ãŠããŸããããã¯æã¿ãŸããã
ããã«ç°¡ç¥åïŒ



ãã®ããŒãžã§ã³ã§ã¯ãã¹ããã«ãŒ/ã¹ããã«ãŒã§ãããã¯ãæã¡è² ããããšã«ããŸããã ã芧ã®ãšããããã®ããŒãã®æåã®ããŒãžã§ã³ã«ã¯ãã©ãããªèŠçŽ ããããŸãã
ãããã¯ã颚æ¯ã¹ã±ãŒãã¢ãŒãã§åçãåŠçããããã®ç§ã®ç»é¢ã§ãïŒåŸã§éžæããŸãããæ¢ã«ããã€ãã®ãæ°ã«å
¥ãããããŸãã
ãã®ãªã³ã¯ã«ãããããªãïŒïŒ





å®å
šã«ç°ãªããã®ïŒåç»åã¯ãã£ã«ã¿ãŒãé©çšããããœãŒã¹ç»åã§ãªããã°ãªããŸããïŒïŒ

ã¯ãªãã¯ãããšã次ã®ç»é¢ãéããŸãã

確ãã«ããã®ãªãã·ã§ã³ã«ã¯ããã€ãã®è³ªåããããŸãã
1.ãã®ç»é¢ãçµäºããæ¹æ³ã¯ïŒ
2.äœããã®ã¢ã¯ã·ã§ã³ã確èªãã2ã€ã®èŠçŽ ïŒãã¿ã³ã¯ãã£ã«ã¿ãŒãé©çšãããã§ãã¯ããŒã¯ã¯èšå®ã«é©çšãããŸãïŒ
3.å°æ°ã®ãã£ã«ã¿ãŒã§ã¯èŠæ ããè¯ããç»åã®ããªãã®éšåãèŠããŸããããã®ã¢ã³ãŒãã£ãªã³ã¯10ã15åã®ãã£ã«ã¿ãŒã§ã©ã®ããã«èŠããŸããïŒ
ããã§ããèŠæ ããè¯ãã®ã§ãæåŸã«ãã®ãªãã·ã§ã³ãç Žæ£ããŸããã
次ã¯ããŒããªãã·ã§ã³ç»é¢ã§ãã ãŠãŒã¶ãŒãæå®ã§ãããã®ïŒ
1ïŒåçããã©ã€ããªãšããŠèšå®
2ïŒçŸåšå°ãæ·»ä»ãã
3ïŒåçãã¢ããããŒãããã¢ã«ãã ãéžæããŸã
4ïŒåçã«åéã¿ã°ã远å ãã
5ïŒå£ã«åçãæçš¿ãã
åºèª¿è¬æŒã®æŠèŠïŒ








äœæããã»ã¹ã®ãããªã¯ã
ãã®ãªã³ã¯ã«ãããŸãã
åçãããŠã³ããŒãããããã»ã¹ããŠãŒã¶ãŒã«ç€ºãå¿
èŠããããŸããïŒ çãããã¯ããã®å ŽåãçŸåšã®ç»é¢ã«ç¹å®ã®èªã¿èŸŒã¿ã€ã³ãžã±ãŒã¿ãŒãé
眮ããããã¢ããããŒãããåçã®ãªã¹ããå«ãæ°ããç»é¢ãäœæããå¿
èŠããããŸãã ãã®ãªã¹ãã¯ãã€ã³ã¿ãŒãããããªããšãã«åçãããŠã³ããŒãããåé¡ã解決ããããã«å¿
èŠã§ãã ãŠãŒã¶ãŒã¯ãã®ãããªæç€ºçãªãªã¹ããã©ãã ãå¿
èŠãšããŸããïŒ äž»ãªã¿ã¹ã¯ã¯ãäžèŠãªãã®ããã¹ãŠé ããã¢ããªã±ãŒã·ã§ã³ãå¯èœãªéãææ©çãã€èªç¶ãªãã®ã«ããããšã§ãã
æ°ååŸããã¥ãŒå
ã®åçã®æ°ã衚瀺ããæ¬¡ã®ãªãã·ã§ã³ãäºæ³ãããŸããã



ããã¯ã°ã©ãŠã³ãã§ç»åãã¢ããããŒãããŸãã äœããã®çç±ã§åçãã¢ããããŒãã§ããªãã£ãå ŽåãåŸã§å詊è¡ããŸããããªã¹ãããåçãåé€ããŸããã
ç§ã¯ãªãã·ã§ã³ãã€ããæåŸã®ç»é¢ãããŸã奜ãã§ã¯ãªãã®ã§ãããäžåºŠãã¬ã€ããããšã«ããŸããã æ¯èŒããïŒ


ãã®ãããªã€ã³ã¿ãŒãã§ã€ã¹ã¯ãã©ã³ãã¹ã±ãŒãã¢ãŒãã§ååŸãããŸãã


ã³ãŒã«ã¢ãŠããããã¯ã®ãããªãã·ã§ã³ã¯èæ
®ããŸããã§ããã ã©ã³ãã¹ã±ãŒãã¹ã±ããã¢ãŒãã«ã¯ååãªåçŽäœçœ®ããããŸãã+ã©ã³ãã¹ã±ãŒãããŒãžã§ã³ãšããŒãã¬ãŒãããŒãžã§ã³ã®éã®èŠçŽ ã®äžè¬çãªäœçœ®ãç¶æãããã£ãã§ãã
ãããã¿ã€ãïŒã¬ãã¥ãŒã äºã
ãã°ã€ã³ç»é¢ïŒ

ã³ã¡ã³ãïŒ
ãªã ã
VKã®ã¢ãŒãã«ãã°ã€ã³ãŠã£ã³ããŠïŒä¿®æ£ããŒãžã§ã³ïŒïŒ

ã³ã¡ã³ãïŒ
åã®ç»é¢ã®ç¢æãæ¿èªãã¯ãã¿ã³ã®ããã«èŠãã被éšè
ã¯ããã«ã€ããŠè³ªåããŸããã
æ®åœ±ãŠã£ã³ããŠïŒããŒãã¬ãŒãã¢ãŒãïŒïŒ

ã³ã¡ã³ãïŒ
ãªã ã
æ®åœ±ãŠã£ã³ããŠïŒé¢šæ¯ã¢ãŒãïŒïŒ

ã³ã¡ã³ãïŒ
ãªã ã
ãã£ã«ã¿ãŒïŒããŒãã¬ãŒãã¢ãŒãïŒïŒ

ã³ã¡ã³ãïŒ
ãªã ã
ãã£ã«ã¿ãŒïŒã©ã³ãã¹ã±ãŒãã¹ãããã¢ãŒãïŒïŒ

ã³ã¡ã³ãïŒ
ãªã ã
ããŠã³ããŒãèšå®ïŒããŒãã¬ãŒãã¢ãŒãïŒïŒ

ã³ã¡ã³ãïŒ
ãã©ã³ããã²ã©ãã ããããç§ã®å人ã§ããããšãããã£ãå ŽåããèŠåºãããšããèŠåºããå¿
èŠãªã®ã¯ãªãã§ããïŒ ïŒèè
ïŒããã¯ãç»é¢ã®2çªç®ã®ããŒãžã§ã³ã衚瀺ãããæ¹æ³ã§ãïŒ
ããŒãèšå®ïŒé åã¢ãŒãïŒïŒ

ã³ã¡ã³ãïŒ
ããŒãã¬ãŒãã¢ãŒãã®ç»é¢ãšåãã§ã ã
ãããã¿ã€ãïŒã¢ãã¡ãŒã·ã§ã³ã äžã
ãããªã¯
ãã®ãªã³ã¯ã§èŠãããšãã§ããŸãã
ã¡ã€ã³ç»é¢ãããã°ã©ã ããŸãã
ãã®ç»é¢ã§ãããã€ãã®å®éšãè¡ãããšã«ããŸããã
1.èæ¯ç»åãšã¢ããªã±ãŒã·ã§ã³åã®éã®ãã¬ã©ã¹ãã¬ã€ã€ãŒãšããŠããã«ãŒå¹æã䜿çšããŸãã
2.æ¿èªãã¿ã³ã¯ã圱ä»ãã®ç»åãšãšãã«æ¿å
¥ããã®ã§ã¯ãªããããã°ã©ã ã§äœæããå¿
èŠããããŸãã
ãããããçŽç²ãªåœ¢ã§bluerã䜿çšããŠããæãŸãã广ã¯åŸãããŸããã
ããªãã¯ããå¿
èŠããããŸã-å¥ã®ã¬ã€ã€ãŒã远å ããŸãã ãã£ãŠã¿ãŸãããã 远å ã®ã¬ã€ã€ãŒã¯ç°è²ã«ãªããç®çã®å¹æãåŸãã«ã¯ïŒã¬ã€ã¢ãŠãã®ããã«ïŒãã¬ã€ã€ãŒèªäœã®éæåºŠã詊ãå¿
èŠããããŸãïŒã¢ã«ãã¡ïŒã
ã¢ããªã±ãŒã·ã§ã³ã®ããŽã«ã¯ãç°¡åãªç»åãæ¿å
¥ãããŠããŸãã
ã·ã£ããŠãæ±ãã®ã¯ãã£ãšé¢çœãã£ãã§ããå®éãåããã¥ãŒã§cornerRadiusãšã«ã¹ã¿ã shadowPathã䜿çšããããšã¯ã§ããŸããã ã°ãŒã°ã«ã§ããã¥ã¡ã³ããèªãã åŸãå¥ã®ã¬ã€ã€ãŒã«åœ±ãä»ããããšã«ããŸããã ç®çã®ã¹ããã«ãŒå¹æãå®çŸããã«ã¯ããã¿ã³ã®äžã®åœ±ã®å¢çç·ã決å®ããå¿
èŠããããŸãããã®ããã«ã¯ã
GGPathã䜿çšããŠ
ãžãªã¡ããªãèšæ¶ããŸãã
ãã¿ã³ã®äžã®åœ±ãããèŠããšã1ã€ã®äžžãåŽé¢ïŒäžïŒãæã€ãã»ãŒãé·æ¹åœ¢ã§æ§æãããŠãããšæšå®ã§ããŸãã çŽç·ã®äœæã«åé¡ã¯ãªãã¯ãã§ã
-CGPathAddLineToPointïŒïŒããã³
CGPathMoveToPointïŒïŒ ã äžžã¿ã垯ã³ãåŽé¢ã«ã€ããŠã¯ãéžæè¢ãã»ãšãã©ãããŸãããäžžã¿ã垯ã³ãåŽé¢ãã ãŸããŠ2æ¬ã®çŽç·ã«çœ®ãæãããã
CGPathAddArcïŒïŒã¡ãœãããªã©ãåŠçããŸãã
æåã®æ¹æ³ã䜿çšããŠããç®çã®å¹æãéæããããšã¯ã§ããªããšããã«èšããŸãã
ã©ã®è³ªåã«çããå¿
èŠããããŸããïŒ
1.
匊ã®é·ããšååŸãç¥ã£ãŠã匊ã®ã鿢ãè§åºŠã決å®ããæ¹æ³ã¯ ïŒ
2.
ã©ãžã¢ã³ãšã¯äœã§ããããŸãåã¯0ãã2PiãŸã§ã¯ã©ã®ããã«èŠããŸããïŒ
æåã®å Žåãç¹å¥ãªå°é£ã¯çºçããŸããã ã³ãŒãã®é·ããèšç®ããããã®åŒããããååŸãšè§åºŠã®å€æ°ããããè§åºŠã衚çŸããå¿
èŠãªå€ã眮ãæããå¿
èŠããããŸãã
2çªç®ã®è³ªåã§ã¯ãå®è£
äžã«ãäºæ³ããŠããªãã£ãããšãçºçããŸããã
ã©ãžã¢ã³åäœã§ããŒã¯ãããè§åºŠãæã€åã¯æ¬¡ã®ããã«ãªããŸãã

ã«ãŠã³ãããŠã³ã¯åæèšåãã«é²ã¿ãã¢ããã«ã®å®è£
ã§ã¯ãã«ãŠã³ãããŠã³ã¯
æèšåãã«ãªããŸãïŒ ç§ãã¡ãšäžç·ã«270ã圌ããš90ã
ç§ã¯ãããæåŸ
ããŠããŸããã§ãããå€åç§ã¯äœããèŠéããŠããŸããïŒ
圱ãã¬ã³ããªã³ã°ããããã®ã³ãŒãã¯æ¬¡ã®ãšããã§ãïŒPSïŒãã ããSwiftã®ãã€ã©ã€ãã¯ãããŸããïŒã
æ¯èŒã§ããŸãïŒå·ŠåŽã®ã¬ã€ã¢ãŠããå³åŽã®å®è£
ïŒïŒ


VKã§èªèšŒç»é¢ãããã°ã©ã ããŸãã
æåã«è¡ãããšã¯ã
Vkontakte iOS SDKããããžã§ã¯ãã«çµ±åããããšã§ãã
Vkontakte iOS SDK㯠Objective-Cã§äœæãããŠã
ãŸããObjective -CãSwiftãããžã§ã¯ãã«çµ±åããæ¹æ³ã«é¢ãã
ãã¥ãŒããªã¢ã«ããããŸãã
SDKã®æ¥ç¶ã«åé¡ã¯ãããŸããã§ããã
èªå¯ããã»ã¹ã¯ã次ã®ã¡ãœãããåŒã³åºãããšã§éå§ãããŸãã
VKConnector.sharedInstance().startWithAppID("87687678678", permissons: ["photo", "wall", "friends"], webView: self.webView, delegate: self)

èªèšŒã«æåãããšãã¢ã¯ã»ã¹ããŒã¯ã³ãååŸãããSDKããŒã¿ãŠã§ã¢ããŠã¹ã«ä¿åãããŸãã ãŠãŒã¶ãŒã¯åçç»é¢ã«ç§»åããŸãã
åçãå®è£
ããããã®ç»é¢ãããã°ã©ã ããŸã
ãŸããæçµçµæã瀺ããŸãã



ã¡ãã·ã¥ã¯åé€ãããæå³çã«èŠããªããªããŸãã
ããã«ãã¿ã³ã®å Žæã«é¢ãããã®ãããªãªãã·ã§ã³ããããŸããããç»é¢ã®å¢çç·ïŒãã¿ã³ã¯ç»é¢ã§ãïŒãã¯ãªãã¯ãããšãã«ãã¿ã³ã®æšªã®åçãæ®ã£ãããšãå€ããã«ã¡ã©ãåãæ¿ãããã°ãªãããã¢ã¯ãã£ãã«ãããããªãã£ããããæšãŠãããŸããïŒ


ãã®èšäºã¯ãç»é¢ãããã°ã©ã ãããåŸã«ã®ã¿è£è¶³ããããããæ®å¿µãªããããã€ãã®ãã€ã³ããèŠéãå¯èœæ§ããããŸãã
åºç€ãšããŠãã¿ã¹ã¯ãéåžžã«ãã解決ããã®ã«é©ããUIImagePickerControllerã䜿çšããŸããã ãã¹ãŠã®èŠçŽ ãé衚瀺ã«ããäžèŠãªãã®ããã¹ãŠåé€ããcameraOverlayViewãã€ã³ã¹ããŒã«ããŸããã
let cameraView = NAGImagePickerController() cameraView.delegate = cameraView cameraView.sourceType = UIImagePickerControllerSourceType.Camera cameraView.showsCameraControls = false cameraView.allowsEditing = false cameraView.cameraOverlayView = NAGFirstPhotoOverlayView(frame: UIScreen.mainScreen().bounds)
ç§ã«ãšã£ãŠã¡ãã£ãšããé©ãã¯ããã®èŠèŠçãªãºãŒã èŠçŽ ã®å€èгã§ããã

ããã§ã¯å¿
èŠãããŸããã§ãããããã¥ãŒãå°ç¡ãã«ããŸãããããã«ããã¿ã³ããããã¯ããŸãããåé€ããå¿
èŠããããŸãã é ã«æµ®ããã æåã®ã¡ãœãããå®è£
ããŸããïŒ
let pinchGR = UIPinchGestureRecognizer(target: self, action: nil) addGestureRecognizer(pinchGR)
ãããããSOã§ããã«è峿·±ããœãªã¥ãŒã·ã§ã³ãªãã·ã§ã³ãæ€çŽ¢ããŠãuserInteractionãfalseã«èšå®ããããšã«ããŸããã
æãè峿·±ãè¡ãèããŠã¿ãŸããããç§ã®æèŠã§ã¯ãæãè峿·±ãè¡ã¯ããããå§ãŸããŸãã
cameraView.delegate = cameraView
2ã€ã®è³ªåïŒ
1. UIImagePickerControllerã衚瀺ããããã衚瀺ããããã¿ã³ã®ã¢ãã¡ãŒã·ã§ã³ãéå§ããå¿
èŠããããããäœããã®æ¹æ³ã§ã€ãã³ã/éç¥ãåä¿¡ããå¿
èŠããããŸããã€ãŸããUIImagePickerControllerèªäœã®viewDidAppearã¡ãœãããæžãæããå¿
èŠããããŸãã
2.åçãæ®ãããããã³ãã«ã¡ã©ã«åãæ¿ããå¿
èŠãããããšãäœããã®æ¹æ³ã§UIImagePickerControllerã«éç¥ããå¿
èŠããããŸãã
2ã€ã®ãœãªã¥ãŒã·ã§ã³ãèŠã€ãããŸããã
1. UIImagePickerControllerãã°ããŒãã«ã¹ã³ãŒãã«ããŸã
2. UIImagePickerControllerã®ãµãã¯ã©ã¹ãäœæãããå
éšãã§çºçããã€ãã³ãã«é¢ããéç¥ãéä¿¡ããã³ãã³ãèªäœãåŠçã§ããããã«å®è£
ããŸãïŒåçã®æ®åœ±ãã«ã¡ã©ã®å€æŽãªã©ïŒ-NSNotificationCenter
æåã®éžæè¢ã¯ã»ãšãã©è©ŠããŠèŠå§ããŸããããããæç¹ã§ãã®æ±ºå®ã«ããããããandãããšã«æ°ã¥ããŸããã æçµçã«ãéç¥ã䜿çšããŠãã¹ãŠãå®è£
ãããŸããã éåžžã«ã·ã³ãã«ã§ãããšåæã«æè»æ§ããããŸããã
ãã®æ®µéã§ã¯ãNAGImagePickerControllerã¯æ¬¡ã®ããã«ãªããŸãã
ä»ãç§ãã¡ã¯éãã«cameraOverlayViewã«ãµãã¹ã¯ã©ã€ãããŠãUIImagePickerControllerã®viewDidAppearïŒãšããéç¥ãåãåããŸãã
NSNotificationCenter.defaultCenter().addObserver(self, selector: "imagePickerControllerViewDidAppear:", name: kNAGImagePickerControllerViewDidAppearNotification, object: nil)
ããïŒ ããã§ãã³ã³ãããŒã«ãäœæããŠã¢ãã¡ãŒã·ã§ã³ã§è¡šç€ºã§ããŸãã
createControlElements()
åãæ¹æ³ã§ãããã€ã¹ã®åãã®å€æŽã«é¢ããéç¥ãåä¿¡ããããã«ãµãã¹ã¯ã©ã€ãããŸãã
UIDevice.currentDevice().beginGeneratingDeviceOrientationNotifications() NSNotificationCenter.defaultCenter().addObserver(self, selector: "deviceDidChangeOrientation:", name: UIDeviceOrientationDidChangeNotification, object: nil)
ãªãããã§ä»ãããè¡ãã®ã§ããïŒ å®éãã¢ããªã±ãŒã·ã§ã³ã®èµ·åæã«ããã€ã¹ãä»»æã®åãã«ããå Žåãåãã®æåã®éç¥ã¯ãããŸãããã€ãŸãããããèŠçŽ ã®æåã®è¡šç€ºãã©ãããæ±ºå®ãã倿ŽåŠçã¡ãœããã«ãã©ã°ã远å ããå¿
èŠããããšããããšã§ãã æåã®å€èгã§ã®ã¿ã¢ãã¡ãŒã·ã§ã³ãåçãããŸãã äžèŠãªifã远å ãããã©ã°å€æ°ãå
¥åããå¿
èŠããããŸããçµæãæ°ã«å
¥ãããäžã«ç€ºãããã®ã«å°éããŸããã
ããã€ã¹ã®åãã®å€æŽãåŠçããæ¹æ³ã§ã¯ã1ïŒç»é¢ã®ç®çã®è§ã«ãã¿ã³ãé
眮ãã2ïŒãã¿ã³ã®å転ãããã€ã¹ã®å転æ¹åã«ã¢ãã¡ãŒã·ã§ã³åããŸãã
func layout(orientation: UIDeviceOrientation) { println(__FUNCTION__) switch orientation { case .Portrait: leftButton.frame = position(leftButton, atCorner: .UpperLeftCorner) rightButton.frame = position(rightButton, atCorner: .UpperRightCorner) case .PortraitUpsideDown: leftButton.frame = position(leftButton, atCorner: .LowerRightCorner) rightButton.frame = position(rightButton, atCorner: .LowerLeftCorner) case .LandscapeRight: leftButton.frame = position(leftButton, atCorner: .LowerLeftCorner) rightButton.frame = position(rightButton, atCorner: .UpperLeftCorner) default:
ãã°ããã®éãç·ã®æç»ãéžæããŠããŸããããlayer.alpha = 0.0ã®ç·ã衚瀺ãããªãçç±ãçè§£ã§ããŸããã§ããã ãŠã§ããžãçŽããbackgroundColorãclearColorïŒïŒã«èšå®ãããšããã¹ãŠãé©åã«é
眮ãããŸããã
ç·ã®æç»ã¯drawRectïŒã¡ãœããã«ãããæ¬¡ã®ããã«ãªããŸãã
let screenHeight = CGRectGetHeight(UIScreen.mainScreen().bounds) let screenWidth = CGRectGetWidth(UIScreen.mainScreen().bounds) let context = UIGraphicsGetCurrentContext() CGContextSetLineWidth(context, 1.0) CGContextSetShadow(context, CGSizeZero, 1.0) CGContextSetStrokeColorWithColor(context, UIColor(red: 0.803, green: 0.788, blue: 0.788, alpha: 0.5).CGColor)
ç»é¢ãå®è£
ãããåŸã
Swiftããã°ã¯ã¢ã¯ã»ã¹ä¿®é£Ÿåã«é¢ããæ
å ±ãæçš¿ããŸããã
ã¢ããªã±ãŒã·ã§ã³ã®å®éã®ãœãŒã¹ã³ãŒãã¯GitHubã§èŠã€ããããšãã§ããŸããèšäºã®æåŸã«ããããªããžããªãžã®ãªã³ã¯ãåç
§ããŠãã ããã
ãã£ã«ã¿ãŒãªãŒããŒã¬ã€ç»é¢ã®ããã°ã©ãã³ã°
ãŠãŒã¶ãŒãåçãæ®ã£ãåŸã次ã®ã¡ãœãããåŒã³åºãããŸãã
func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]!) { NSNotificationCenter.defaultCenter().postNotificationName(kNAGImagePickerControllerUserDidCaptureImageNotification, object: self, userInfo: info) }
åçãæ®åœ±ãããã³ã³ãããŒã«ãæ°ãããã®ã«å€æŽããå¿
èŠããããšããéç¥ã远跡ãªããžã§ã¯ãïŒã¬ã€ã€ãŒïŒã«éä¿¡ããŸãïŒå¥ã®ç»é¢ã«ç§»åããŸãïŒã
éç¥ããåŠçãããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
ããã«ã次ã®ããã«é²ãäºå®ã§ããæçµåçãå«ãã¬ã€ã€ãŒãäœæããŸãããã®ã¬ã€ã€ãŒã«ã¯ãã³ã³ãããŒã«èŠçŽ ã®è¡šç€ºãšå€æŽãæ
åœããå¥ã®UIViewããããŸãã
NAGPhotoOverlayViewã«ã¯ïŒä»ã®ãšããïŒ2ã€ã®ããããã£ããããŸãïŒ
1. UIImageView
2. UIImage
ãããŠæ¬¡ã®ããã«å®£èšãããŸãïŒ
var photoView: UIImageView! var originalPhoto: UIImage!
åæåã¯æ¬¡ã®ãšããã§ãã
init(imageInfo: [NSObject : AnyObject]!, frame: CGRect) { super.init(frame: frame) originalPhoto = imageInfo[UIImagePickerControllerOriginalImage] as UIImage photoView = createPhotoLayer(image: originalPhoto) addSubview(photoView) NSNotificationCenter.defaultCenter().addObserver(self, selector: "deviceDidChangeOrientation:", name: UIDeviceOrientationDidChangeNotification, object: nil) }
ç»åãæ£ããå転ãããããã«ãããã€ã¹ã®å転ã«é¢ããéç¥ãåãåãããã«çŸåšã®ã¬ã€ã€ãŒã«çœ²åããŸãã ããã©ã«ãã§ã¯ãUIImagePickerControllerãä»ããŠæ®åœ±ãããåçã¯åžžã«ããŒãã¬ãŒãã¢ãŒãã§è¡šç€ºãããŸãããããã¯è¡šç€ºæã«ç»åå§çž®ãè¡ãããããšã«æ³šæããŠãã ããã ããã€ã¹ã®åŠçæ¹æ³ã¯æ¬¡ã®ããã«ãªããŸãã
func deviceDidChangeOrientation(notification: NSNotification) { rotateImage(toOrientation: UIDevice.currentDevice().orientation) }
ã¡ã€ã³ç»åå転ã³ãŒãïŒ
private func rotateImage(toOrientation orientation: UIDeviceOrientation) { let orientation = UIDevice.currentDevice().orientation let photoOrientation = originalPhoto.imageOrientation let isLandscapedPhoto = photoOrientation == .Down || photoOrientation == .Up if isLandscapedPhoto && (orientation == .LandscapeLeft || orientation == .LandscapeRight) { photoView.image = UIImage(CGImage: originalPhoto.CGImage, scale: originalPhoto.scale, orientation: orientation == .LandscapeRight ? .Right : .Left) } else if !isLandscapedPhoto && (orientation == .Portrait || orientation == .PortraitUpsideDown){ photoView.image = UIImage(CGImage: originalPhoto.CGImage, scale: originalPhoto.scale, orientation: orientation == .Portrait ? .Right : .Left) } }
äœããŠãã®ïŒ ãŸããåçã®åãã確èªããŠã¿ãŸãããã åçãæšªåãã¢ãŒãã®å Žåã瞊åãã¢ãŒãã®åç-.Portraitããã³.PortraitUpsideDownã®ã¿ã®å Žåãããã€ã¹.LandscapeLeftããã³LandscapeRightã®äœçœ®ã«å¯ŸããŠã®ã¿å転ãèš±å¯ããå¿
èŠããããŸãã
UIImageã€ã³ã¹ã¿ã³ã¹ã®imageOrientationããããã£ãçŽæ¥å€æŽã§ããªããããæ°ãããªããžã§ã¯ããäœæããå¿
èŠããããŸãã
次ã®ã¹ãããã§ã¯ãã³ã³ãããŒã«èŠçŽ ãå«ãã¬ã€ã€ãŒãäœæããèŠçŽ ã®å€èгãã¢ãã¡ãŒã·ã§ã³åãããã£ã«ã¿ãŒãéžæããŠç»åã«é©çšããŸãã
çµãã
ç²ãã...èšäºãåé€ããªãããšã«ããŸããããããã§ãå
¬éããŸãã
ãœãŒã¹ã¯
GitHubã®ãã®ãªã³ã¯ã«ãããŸã ã
ãããã«
èŠç¹ãèŠããªãããšã¯ããªãã§ãã ããããã©ãžããªããæž
èŽããããšãããããŸããã