{"id":1746,"date":"2012-08-26T09:14:46","date_gmt":"2012-08-26T09:14:46","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=1746"},"modified":"2017-01-27T15:24:39","modified_gmt":"2017-01-27T06:24:39","slug":"ios-%ec%9d%b4%eb%af%b8%ec%a7%80-%ed%9a%8c%ec%a0%84%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=1746","title":{"rendered":"[iOS] \uc774\ubbf8\uc9c0 \ud68c\uc804\ud558\uae30"},"content":{"rendered":"<p>iOS\uc5d0\uc11c \uc774\ubbf8\uc9c0\ub97c \ud654\uba74\uc5d0 \ud45c\uc2dc\ud558\ub294 \ubc29\ubc95 \uc911 2\uac00\uc9c0\uc5d0 \ub300\ud574 \uc815\ub9ac\ud574 \ubd05\ub2c8\ub2e4. \uccab\ubc88\uc9f8\ub294 UIView\ub97c \uc0c1\uc18d \ubc1b\uc544 drawRect \ud568\uc218\ub97c \uc7ac\uc815\uc758\ud574 \uc774\ubbf8\uc9c0\ub97c \uc9c1\uc811 \uadf8\ub9ac\ub294 \ubc29\uc2dd, \ub450\ubc88\uc9f8\ub294 \uc774\ubbf8\uc9c0\ub97c \ud45c\uc2dc\ud558\ub294 UIImageView \ucee8\ud2b8\ub864\uc744 \uc774\uc6a9\ud558\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4.<\/p>\n<div><\/p>\n<div>\uba3c\uc800 \uccab\ubc88\uc9f8 \ubc29\uc2dd\uc778 UIView\ub97c \uc0c1\uc18d\ubc1b\uc544 drawRect \ud568\uc218\ub97c \uc7ac\uc815\uc758\ud574 \uc774\ubbf8\uc9c0\ub97c \uadf8\ub9ac\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4. \uc5ec\ud0c0 \ub2e4\ub978 \ucf54\ub4dc\ub294 \uc18c\uc2a4 \ucf54\ub4dc\uc5d0 \ub300\ud55c \ucca8\ubd80 \ud30c\uc77c\uc744 \uc0b4\ud3b4\ubcf4\uba74 \ub420 \uac83\uc774\uace0&#8230; \uc911\uc694\ud55c drawRect \ud568\uc218\ub9cc\uc744 \uc0b4\ud3b4\ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/div>\n<div>\n<pre>- (void)drawRect:(CGRect)rect\r\n{\r\n    CGContextRef context = UIGraphicsGetCurrentContext();\r\n        \r\n    UIImage *img = [UIImage imageNamed:@\"goon.png\"];\r\n    CGSize imgSize = [img size];\r\n\r\n    static CGFloat angle = 0;\r\n    angle += 5;\r\n    CGFloat imgWidth = imgSize.width\/1.5;\r\n    CGFloat imgHeight = imgSize.height\/1.5;\r\n    CGFloat x = 80;\r\n    CGFloat y = 120;\r\n    \r\n    CGRect rc = CGRectMake(x, y, imgWidth, imgHeight);\r\n    \r\n    CGContextTranslateCTM(context, imgWidth\/2+x, imgHeight\/2+y);\r\n    CGContextRotateCTM(context, angle * M_PI\/180);\r\n    CGContextTranslateCTM(context, -imgWidth\/2-x, -imgHeight\/2-y);\r\n    \r\n    [img drawInRect:rc];\r\n}\r\n<\/pre>\n<p>\uc774\ubbf8\uc9c0 \ud68c\uc804\uc5d0 \ub300\ud574\uc11c \uc778\uc9c0\ud574\uc57c\ud560 \ucf54\ub4dc\ub9cc\uc744 \uc124\uba85\ub4dc\ub9ac\uba74 8\ubc88\uc758 angle \uac12\uc774 \ud68c\uc804\uac12\uc785\ub2c8\ub2e4. \uadf8\ub9ac\uace0 12\ubc88\uacfc 13\ubc88 \ucf54\ub4dc\ub294 \uc774\ubbf8\uc9c0\ub97c \ud45c\uc2dc\ud560 \ud654\uba74\uc0c1\uc758 \uc88c\ud45c\uc785\ub2c8\ub2e4. 17\ubc88 ~ 19\ubc88 \ucf54\ub4dc\uac00 \uc2e4\uc81c \uc774\ubbf8\uc9c0\ub97c \ud68c\uc804\uc2dc\ud0a4\uae30 \uc704\ud55c \ucf54\ub4dc\ub85c\uc368 \uc774\ubbf8\uc9c0\ub97c \uc911\uc2ec\uc73c\ub85c \ud68c\uc804\ud558\uae30 \uc704\ud574 \uc774\ub3d9 \ubcc0\ud658\uacfc \ud68c\uc804 \ubcc0\ud658 \ub2e4\uc2dc \uc5ed\uc774\ub3d9 \ubcc0\ud658\uc744 \uc218\ud589\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ub2e4\uc74c\ucc98\ub7fc \ud654\uba74\uc5d0 \uc774\ubbf8\uc9c0\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p><\/div>\n<div><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1034731096.png\" class=\"aligncenter\" width=\"354\" height=\"496\" alt=\"\uc0ac\uc6a9\uc790 \uc0bd\uc785 \uc774\ubbf8\uc9c0\" \/><\/div>\n<div>GooN\uc774\ub77c\ub294 \ubc84\ud2bc\uc744 \ub204\ub974\uba74 \uc774\ubbf8\uc9c0\uac00 5\ub3c4\uc529 \ud68c\uc804\ub429\ub2c8\ub2e4. \ucf54\ub4dc\uc911 angle \ubcc0\uc218\ub97c static\uc73c\ub85c \uc9c0\uc815\ud55c \uc774\uc720\uac00 \ubc14\ub85c \ud68c\uc804 \uac01\ub3c4 \uac12\uc744 \uc720\uc9c0\ud558\uae30 \uc704\ud568\uc774\uc600\uc2b5\ub2c8\ub2e4.<\/div>\n<div><\/div>\n<div>\uc774\uc81c \ub450\ubc88\uc9f8\ub85c UIImageView\ub97c \ud1b5\ud574 \uc774\ubbf8\uc9c0\ub97c \ud45c\uc2dc\ud558\uace0 \ud68c\uc804\ud574 \ubcf4\ub294 \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc77c\ub2e8 .xib \ud30c\uc77c\uc744 \ud3b8\uc9d1\ud574 UI \ub2e8\uc5d0 UIImageView \ucee8\ud2b8\ub864\uc744 \uc6d0\ud558\ub294 \uc704\uce58\uc5d0 \ubc30\uce58\ud558\uace0 \uc774 \ucef4\ud3ec\ub10c\ud2b8\uc5d0 \uc774\ubbf8\uc9c0 \ud30c\uc77c\uc744 \uc9c0\uc815\ud558\uba74 \uc27d\uac8c \uc774\ubbf8\uc9c0\ub97c \ud45c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc81c \uc5ec\uae30\uc11c \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uba74 \uc774\ubbf8\uc9c0\ub97c \ud68c\uc804\ud558\ub294 \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/div>\n<div>\n<pre>-(IBAction)rotateAction:(id)sender\r\n{\r\n    [UIView beginAnimations:nil context:nil];\r\n    [UIView setAnimationDuration:3];\r\n    \r\n    CGAffineTransform rotateTransform =\r\n        CGAffineTransformMakeRotation(angle * M_PI \/ 180);\r\n    \r\n    angle = (angle == 180 ? 360 : 180);\r\n    imageView.transform = rotateTransform;\r\n    \r\n    [UIView commitAnimations];\r\n}\r\n<\/pre>\n<p>\ubcf4\uc2dc\uba74 \uc55e\uc11c \uc0b4\ud3b4\ubcf8 \uccab\ubc88\uc9f8 \ubc29\ubc95\ucc98\ub7fc \ub2e8\uc21c\ud788 \ud68c\uc804\ub41c \uc0c1\ud0dc\uc758 \uc774\ubbf8\uc9c0\ub97c \ud654\uba74\uc5d0 \ucc0d\ub294 \uac83\uc774 \uc544\ub2cc \uc560\ub2c8\uba54\uc774\uc158 \ud6a8\uacfc\ub97c \uc8fc\uc5b4\uc11c \uc774\ubbf8\uc9c0\ub97c \ud68c\uc804\uc2dc\ud0a4\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uac8c \ubc14\ub85c UIImageView\uc640 \uac19\uc740 \ucee8\ud2b8\ub864\uc744 \ud1b5\ud574 \uc774\ubbf8\uc9c0\ub97c \ud45c\ud604\ud558\ub294 \uac00\uc7a5 \ud070 \uc7a5\uc810\uc785\ub2c8\ub2e4. \ucf54\ub4dc\ub3c4 \ud6e8\uc52c \uac04\uacb0\ud558\uad6c\uc694 !! \ud83d\ude42 \uc2e4\ud589 \uacb0\uacfc\ub294 \uccab\ubc88\uc9f8\uc5d0\uc11c \uc18c\uac1c\ud55c \uc2e4\ud589 \ud654\uba74\uacfc \ub3d9\uc77c\ud558\ubbc0\ub85c \uc0dd\ub7b5\ud558\uaca0\uc2b5\ub2c8\ub2e4. \ucc28\uc774\uc810\uc740 \uc560\ub2c8\uba54\uc774\uc158\uc744 \ud1b5\ud574 \uc774\ubbf8\uc9c0\uac00 \ud68c\uc804\ub41c\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p><\/div>\n<div><\/div>\n<div>\ub05d\uc73c\ub85c \uccab\ubc88\uc9f8 \ubc29\ubc95\uacfc \ub450\ubc88\uc9f8 \ubc29\ubc95\uc5d0 \ub300\ud55c XCode \ud504\ub85c\uc81d\ud2b8\uc5d0 \ub300\ud55c \uc804\uccb4 \uc18c\uc2a4 \ucf54\ub4dc\ub97c \ucca8\ubd80\ud569\ub2c8\ub2e4.<\/p>\n<\/div>\n<div><\/div>\n<p style='text-align:center'><a href=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1051597829.zip\"><img width='64' src='\/images\/download.svg' \/><\/a><a href=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1030086567.zip\"><img width='64' src='\/images\/download.svg' \/><\/a><\/p>\n<div><\/div>\n<div>firstMethod.zip \ud30c\uc77c\uc774 UIView\uc758 drawRect \ud568\uc218\uc758 \uc7ac\uc815\uc758\ub97c \ud1b5\ud574 \uc774\ubbf8\uc9c0\ub97c \ud68c\uc804\ud574 \ud45c\uc2dc\ud558\ub294 \uac83\uc774\uace0 secondMethod.zip \ud30c\uc77c\uc774 UIImageView \ucee8\ud2b8\ub864\uc744 \uc774\uc6a9\ud574 \uc774\ubbf8\uc9c0\ub97c \ud68c\uc804\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>iOS\uc5d0\uc11c \uc774\ubbf8\uc9c0\ub97c \ud654\uba74\uc5d0 \ud45c\uc2dc\ud558\ub294 \ubc29\ubc95 \uc911 2\uac00\uc9c0\uc5d0 \ub300\ud574 \uc815\ub9ac\ud574 \ubd05\ub2c8\ub2e4. \uccab\ubc88\uc9f8\ub294 UIView\ub97c \uc0c1\uc18d \ubc1b\uc544 drawRect \ud568\uc218\ub97c \uc7ac\uc815\uc758\ud574 \uc774\ubbf8\uc9c0\ub97c \uc9c1\uc811 \uadf8\ub9ac\ub294 \ubc29\uc2dd, \ub450\ubc88\uc9f8\ub294 \uc774\ubbf8\uc9c0\ub97c \ud45c\uc2dc\ud558\ub294 UIImageView \ucee8\ud2b8\ub864\uc744 \uc774\uc6a9\ud558\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4. \uba3c\uc800 \uccab\ubc88\uc9f8 \ubc29\uc2dd\uc778 UIView\ub97c \uc0c1\uc18d\ubc1b\uc544 drawRect \ud568\uc218\ub97c \uc7ac\uc815\uc758\ud574 \uc774\ubbf8\uc9c0\ub97c \uadf8\ub9ac\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4. \uc5ec\ud0c0 \ub2e4\ub978 \ucf54\ub4dc\ub294 \uc18c\uc2a4 \ucf54\ub4dc\uc5d0 \ub300\ud55c \ucca8\ubd80 \ud30c\uc77c\uc744 \uc0b4\ud3b4\ubcf4\uba74 \ub420 \uac83\uc774\uace0&#8230; \uc911\uc694\ud55c drawRect \ud568\uc218\ub9cc\uc744 \uc0b4\ud3b4\ubcf4\uba74 \ub2e4\uc74c\uacfc &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=1746\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;[iOS] \uc774\ubbf8\uc9c0 \ud68c\uc804\ud558\uae30&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-1746","post","type-post","status-publish","format-standard","hentry","category-programming"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/1746","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1746"}],"version-history":[{"count":3,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/1746\/revisions"}],"predecessor-version":[{"id":3043,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/1746\/revisions\/3043"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1746"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1746"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1746"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}