{"id":379,"date":"2012-05-13T02:20:57","date_gmt":"2012-05-12T22:20:57","guid":{"rendered":"http:\/\/ilya2606.ru\/?p=379"},"modified":"2012-05-13T02:33:31","modified_gmt":"2012-05-12T22:33:31","slug":"%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d0%b8%d0%b7%d0%be%d0%b1%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f%d0%bc%d0%b8","status":"publish","type":"post","link":"http:\/\/ilya2606.ru\/?p=379","title":{"rendered":"\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438"},"content":{"rendered":"<p style=\"text-align: center;\"><a href=\"http:\/\/ilya2606.ru\/wp-content\/uploads\/2012\/05\/collage.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-medium wp-image-380\" title=\"collage\" src=\"http:\/\/ilya2606.ru\/wp-content\/uploads\/2012\/05\/collage-300x210.jpg\" alt=\"\" width=\"300\" height=\"210\" srcset=\"http:\/\/ilya2606.ru\/wp-content\/uploads\/2012\/05\/collage-300x210.jpg 300w, http:\/\/ilya2606.ru\/wp-content\/uploads\/2012\/05\/collage.jpg 360w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438.<br \/>\n\u0418\u0442\u0430\u043a, \u043f\u043e\u0435\u0445\u0430\u043b\u0438!<br \/>\n<!--more--><br \/>\n<strong>\u041a\u0430\u043a \u0441\u043a\u0430\u0447\u0430\u0442\u044c, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 URL<\/strong><\/p>\n<p>URL \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/p>\n<pre>NSURL *url = [NSURL URLWithString: @\"http:\/\/darknessproduction.ru\/ifullstat.png\"];<\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 UIImage \u0438\u0437 NSData<\/p>\n<pre>UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]];<\/pre>\n<p>\u041f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u043d\u0430 \u043d\u0430\u0448 UIView<\/p>\n<pre>NSURL *url = [NSURL URLWithString:\r\n\u00a0 \u00a0@\"http:\/\/darknessproduction.ru\/ifullstat.png\"];\r\nUIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]];\r\n[self.view addSubview:[[[UIImageView alloc] initWithImage:image] autorelease]];<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u0417\u0430\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/strong><\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c<\/p>\n<pre>#include &lt;QuartzCore\/QuartzCore.h&gt;<\/pre>\n<p>\u0432 viewDidLoad \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c:<\/p>\n<pre>CALayer * ourLayer = [imageView layer]; \/\/ \u0411\u0443\u0434\u0435\u043c \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0442\u044c UIImageView\r\nourLayer.cornerRadius = 8.0f; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ \u0417\u0430\u0434\u0430\u0435\u043c \u0440\u0430\u0434\u0438\u0443\u0441 \u0434\u043b\u044f \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f.\r\nourLayer.masksToBounds = YES; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ \u0427\u0442\u043e\u0431\u044b \u0437\u0430 \u043e\u0432\u0430\u043b\u044c\u043d\u043e\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0432 \u0443\u0433\u043b\u0430\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u043e\u0441\u044c\r\nourLayer.borderWidth = 0.0f; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ \u0413\u0440\u0430\u043d\u0438\u0446\u0443 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 - \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0442\u043e\u043b\u0449\u0438\u043d\u0443<\/pre>\n<p>\u041d\u0443 \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u0441\u0451. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0432\u0430\u043b\u044c\u043d\u044b\u0439 View, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c cornerRadius \u0440\u0430\u0432\u043d\u044b\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u0434\u043b\u0438\u043d\u044b \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043d\u0430\u0448\u0435\u0433\u043e View.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a<\/strong><\/p>\n<p>GIF \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 SDK, \u0442\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043d\u0435 \u043e \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0432 OpenGL, \u0442\u043e \u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0442\u0430\u043a:<br \/>\n1. \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 UIImageView<br \/>\n2. \u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0441\u0435\u0440\u0438\u044e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432\u0430\u0448\u0435\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043a\u0430\u043a \u043c\u0430\u0441\u0441\u0438\u0432 UIImage \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<br \/>\n3. \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 animationImages \u0432 UIImageView<br \/>\n4. \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435 animationDuration<br \/>\n5. startAnimating \u0434\u043b\u044f UIImageView<\/p>\n<pre>NSArrray *theImages = [NSArray arrayWithObjects:\r\n\u00a0 \u00a0 \u00a0 \u00a0 [UIImage imageNamed:@\"image_1.png\"],\r\n\u00a0 \u00a0 \u00a0 \u00a0 [UIImage imageNamed:@\"image_2.png\"],\r\n\u00a0 \u00a0 \u00a0 \u00a0 [UIImage imageNamed:@\"image_3.png\"],\r\n\u00a0 \u00a0 \u00a0 \u00a0 [UIImage imageNamed:@\"image_4.png\"],\r\n\u00a0 \u00a0 \u00a0 \u00a0 [UIImage imageNamed:@\"image_5.png\"], nil];\r\nUIImageView *anImageView = ... \/\/\u043c\u0435\u043c\u0431\u0435\u0440 \u043a\u043b\u0430\u0441\u0441\u0430, \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043f\u043e \u043c\u0435\u0441\u0442\u0443, \u043d\u0435 \u0432\u0430\u0436\u043d\u043e\r\nanImageView.animationImages = theImages;\r\nanImageView.animationDuration = 1.0; \/\/ 1 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\r\n[anImageView startAnimating];<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u041a\u0430\u043a \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u043c\u0435\u0439\u043b \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u0430\u043c\u0435\u0440\u0443 \u0438 \u0444\u043e\u0442\u043e\u0430\u043b\u044c\u0431\u043e\u043c<\/strong><\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u043a\u0430\u043c\u0435\u0440\u044b iPhone<\/p>\n<pre>- (void)buttonPressed:(UIButton *)button\r\n{\r\n\u00a0 \/\/ \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 image picker controller\r\n\u00a0 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];\r\n\u00a0 \u00a0\/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u0440\u0441 \u0434\u043b\u044f \u043a\u0430\u043c\u0435\u0440\u044b\r\n\u00a0 imagePicker.sourceType = \u00a0UIImagePickerControllerSourceTypeCamera;\r\n\u00a0 \u00a0\/\/ \u0422\u0435\u043a\u0443\u0449\u0438\u0439 Delegate\r\n\u00a0 imagePicker.delegate = self;\r\n\u00a0 \u00a0\/\/ \u0412\u044b\u0440\u0443\u0431\u0430\u0435\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439\r\n\u00a0 imagePicker.allowsImageEditing = NO;\r\n\u00a0 \u00a0\/\/ \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c image picker\r\n\u00a0 [self presentModalViewController:imagePicker animated:YES]; \u00a0\r\n}<\/pre>\n<p>\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043a\u0430\u043c\u0435\u0440\u044b \u0432 NSData<\/p>\n<pre>- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info\r\n{\r\n\u00a0 \/\/ \u0411\u0435\u0440\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u044f\r\n\u00a0 UIImage *image = [info objectForKey:@\"UIImagePickerControllerOriginalImage\"];\r\n\u00a0 \u00a0\/\/ \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043e\u043a\u043d\u043e \u043a\u0430\u043c\u0435\u0440\u044b\r\n\u00a0 [self dismissModalViewControllerAnimated:YES];\r\n\u00a0 \u00a0\/\/ \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u043f\u043e\u0447\u0442\u0435\r\n\u00a0 [self performSelector:@selector(emailImage:) withObject:image afterDelay:1.0];\r\n\u00a0 \u00a0\/\/ \u0420\u0435\u043b\u0438\u0437\u0438\u043c picker\r\n\u00a0 [picker release];\r\n}<\/pre>\n<p>\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u043a\u0430\u043c\u0435\u0440\u044b<\/p>\n<pre>- (void)emailImage:(UIImage *)image\r\n{\r\n\u00a0 MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];\r\n\u00a0 picker.mailComposeDelegate = self;\r\n\u00a0 \u00a0\/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0442\u0435\u043c\u0443 \u043f\u0438\u0441\u044c\u043c\u0430\r\n\u00a0 [picker setSubject:@\"Picture from my iPhone!\"];\r\n\u00a0 \u00a0\/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u0447\u0442\u044b, \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u00a0 \u00a0 \u00a0\r\n\u00a0 [picker setToRecipients:[NSArray arrayWithObjects:@\"(\u0413\u043e\u0441\u0442\u0438 \u043d\u0435 \u0432\u0438\u0434\u044f\u0442 \u0441\u0441\u044b\u043b\u043e\u043a. )\", @\"(\u0413\u043e\u0441\u0442\u0438 \u043d\u0435 \u0432\u0438\u0434\u044f\u0442 \u0441\u0441\u044b\u043b\u043e\u043a. )\", nil]];\r\n\u00a0 [picker setCcRecipients:[NSArray arrayWithObject:@\"(\u0413\u043e\u0441\u0442\u0438 \u043d\u0435 \u0432\u0438\u0434\u044f\u0442 \u0441\u0441\u044b\u043b\u043e\u043a. )\"]]; \u00a0 \u00a0 \u00a0\r\n\u00a0 [picker setBccRecipients:[NSArray arrayWithObject:@\"(\u0413\u043e\u0441\u0442\u0438 \u043d\u0435 \u0432\u0438\u0434\u044f\u0442 \u0441\u0441\u044b\u043b\u043e\u043a. )\"]];\r\n\u00a0 \u00a0\/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0442\u0435\u043b\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\r\n\u00a0 NSString *emailBody = @\"I just took this picture, check it out.\";\r\n\u00a0 \u00a0\/\/ \u0412\u044b\u0440\u0443\u0431\u0430\u0435\u043c XTML \u0444\u043e\u0440\u043c\u0430\u0442\r\n\u00a0 [picker setMessageBody:emailBody isHTML:NO];\r\n\u00a0 \u00a0\/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c NSData \u0438\u0437 PNG \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u043a\u0430\u043c\u0435\u0440\u044b\r\n\u00a0 NSData *data = UIImagePNGRepresentation(image);\r\n\u00a0 \u00a0\/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a \u043f\u0438\u0441\u044c\u043c\u0443 \u043a\u0430\u043a \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0435\r\n\u00a0 [picker addAttachmentData:data mimeType:@\"image\/png\" fileName:@\"CameraImage\"];\r\n\u00a0 \u00a0\/\/ \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u043a\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0438\u0441\u044c\u043c\u0430\r\n\u00a0 [self presentModalViewController:picker animated:YES];\r\n\u00a0 \u00a0\/\/ \u0420\u0435\u043b\u0438\u0437\u0438\u043c picker\r\n\u00a0 [picker release];\r\n}\r\n\u00a0- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error\r\n{\r\n\u00a0 \/\/ \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043e\u043a\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u00a0 \u00a0\r\n\u00a0 [self dismissModalViewControllerAnimated:YES];\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u041a\u0430\u043a \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/strong><\/p>\n<p>\u0420\u0430\u0434\u0438\u0430\u043d\u044b \u0438 \u0433\u0440\u0430\u0434\u0443\u0441\u044b<br \/>\n\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u0438\u0437 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432 \u0432 \u0440\u0430\u0434\u0438\u0430\u043d\u044b<\/p>\n<pre>\/\/ This is defined in Math.h\r\n#define M_PI \u00a0 3.14159265358979323846264338327950288 \u00a0 \/* pi *\/\r\n#define DEGREES_TO_RADIANS(angle) ((angle \/ 180.0) * M_PI)<\/pre>\n<p>\u0412\u0440\u0430\u0449\u0430\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/p>\n<pre>- (void)rotateImage:(UIImageView *)image duration:(NSTimeInterval)duration\r\n\u00a0 \u00a0 \u00a0 \u00a0curve:(int)curve degrees:(CGFloat)degrees\r\n{\r\n\u00a0 \/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e\r\n\u00a0 [UIView beginAnimations:nil context:NULL];\r\n\u00a0 [UIView setAnimationDuration:duration];\r\n\u00a0 [UIView setAnimationCurve:curve];\r\n\u00a0 [UIView setAnimationBeginsFromCurrentState:YES];\r\n\u00a0 CGAffineTransform transform =\r\n\u00a0 \u00a0 \u00a0 CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(degrees));\r\n\u00a0 image.transform = transform;\r\n\u00a0 [UIView commitAnimations];\r\n}<\/pre>\n<p>\u0412\u044b\u0437\u043e\u0432 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f<\/p>\n<pre>- (void)startApp\r\n{\r\n\u00a0 UIImageView *imageToMove =\r\n\u00a0 \u00a0 \u00a0[[UIImageView alloc] initWithImage:[UIImage imageNamed:@\"ArrowUp.png\"]];\r\n\u00a0 imageToMove.frame = CGRectMake(10, 10, 20, 100);\r\n\u00a0 [self.view addSubview:imageToMove];\r\n\u00a0 \u00a0[self rotateImage:imageToMove duration:3.0\r\n\u00a0 \u00a0 \u00a0 curve:UIViewAnimationCurveEaseIn degrees:180];\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u041a\u0430\u043a \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/strong><\/p>\n<p>\u041f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/p>\n<pre>- (void)moveImage:(UIImageView *)image duration:(NSTimeInterval)duration\r\n\u00a0 \u00a0 \u00a0curve:(int)curve x:(CGFloat)x y:(CGFloat)y\r\n{\r\n\u00a0 \/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e\r\n\u00a0 [UIView beginAnimations:nil context:NULL];\r\n\u00a0 [UIView setAnimationDuration:duration];\r\n\u00a0 [UIView setAnimationCurve:curve];\r\n\u00a0 [UIView setAnimationBeginsFromCurrentState:YES];\r\n\u00a0 \u00a0\/\/ The transform matrix\r\n\u00a0 CGAffineTransform transform = CGAffineTransformMakeTranslation(x, y);\r\n\u00a0 image.transform = transform;\r\n\u00a0 [UIView commitAnimations];\r\n\u00a0}<\/pre>\n<p>\u0412\u044b\u0437\u043e\u0432 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f<\/p>\n<pre>- (void)startApp\r\n{\r\n\u00a0 UIImageView *imageToMove =\r\n\u00a0 \u00a0 \u00a0[[UIImageView alloc] initWithImage:[UIImage imageNamed:@\"Square.png\"]];\r\n\u00a0 imageToMove.frame = CGRectMake(10, 10, 20, 100);\r\n\u00a0 [self.view addSubview:imageToMove];\r\n\u00a0 [self moveImage:imageToMove duration:3.0\r\n\u00a0 \u00a0 \u00a0curve:UIViewAnimationCurveLinear x:50.0 y:50.0];\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u041a\u0430\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c UIImage \u0432 PNG \u0438\u043b\u0438 JPG<\/strong><\/p>\n<pre>\/\/\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0443\u0442\u0438 \u0434\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432\r\nNSString \u00a0*pngPath = [NSHomeDirectory() stringByAppendingPathComponent:@\"Documents\/Test.png\"];\r\nNSString \u00a0*jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@\"Documents\/Test.jpg\"];\r\n\u00a0\/\/ \u0417\u0430\u043f\u0438\u0448\u0435\u043c UIImage \u0432 JPEG \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0436\u0430\u0442\u0438\u0435\u043c (\u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e)\r\n[UIImageJPEGRepresentation(image, 1.0) writeToFile:jpgPath atomically:YES];\r\n\u00a0\/\/ \u0417\u0430\u043f\u0438\u0448\u0435\u043c UIImage \u0432 PNG\r\n[UIImagePNGRepresentation(image) writeToFile:pngPath atomically:YES];\r\n\u00a0\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043a\u0430\u043a \u0445\u043e\u0440\u043e\u0448\u043e \u0443 \u043d\u0430\u0441 \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u043e\u0441\u044c:\r\n\u00a0\/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b-\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\r\nNSError *error;\r\nNSFileManager *fileMgr = [NSFileManager defaultManager];\r\n\u00a0\/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432\r\nNSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@\"Documents\"];\r\n\u00a0\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432\r\nNSLog(@\"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432: %@\", [fileMgr contentsOfDirectoryAtPath:documentsDirectory error:&amp;error]);<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u0441 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0444\u043e\u0442\u043e\u0430\u043b\u044c\u0431\u043e\u043c<\/strong><\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u0430\u043c\u0435\u0440\u0443<\/p>\n<pre>\/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c image picker controller\r\nUIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];\r\n\u00a0\/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u0440\u0441 \u043a\u0430\u043c\u0435\u0440\u044b\r\nimagePicker.sourceType = \u00a0UIImagePickerControllerSourceTypeCamera;\r\n\u00a0\/\/ \u0422\u0435\u043a\u0443\u0449\u0438\u0439 Delegate\r\nimagePicker.delegate = self;\r\n\u00a0\/\/ \u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\r\nimagePicker.allowsImageEditing = NO;\r\n\u00a0\/\/ \u041f\u043e\u043a\u0430\u0436\u0435\u043c image picker\r\n[self presentModalViewController:imagePicker animated:YES];<\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0424\u043e\u0442\u043e\u0430\u043b\u044c\u0431\u043e\u043c<\/p>\n<pre>- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info\r\n{\r\n\u00a0 UIImage *image = [info objectForKey:@\"UIImagePickerControllerOriginalImage\"];\r\n\u00a0 \u00a0\/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\r\n\u00a0 UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);\r\n\u00a0 \u00a0[picker release];\r\n}\r\n- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo\r\n{\r\n\u00a0 UIAlertView *alert;\r\n\u00a0 \u00a0\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\r\n\u00a0 if (error)\r\n\u00a0 \u00a0 alert = [[UIAlertView alloc] initWithTitle:@\"\u041e\u0448\u0438\u0431\u043a\u0430\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 message:@\"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 delegate:self cancelButtonTitle:@\"Ok\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 otherButtonTitles:nil];\r\n\u00a0 else \/\/ \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e\r\n\u00a0 \u00a0 alert = [[UIAlertView alloc] initWithTitle:@\"\u0423\u0441\u043f\u0435\u0445\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 message:@\"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e.\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 delegate:self cancelButtonTitle:@\"Ok\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 otherButtonTitles:nil];\r\n\u00a0 [alert show];\r\n\u00a0 [alert release];\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u041a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/strong><\/p>\n<pre>UIImage *UImageFromPathScaledToSize(NSString* path, CGSize toSize)\r\n{\r\n\u00a0 UIImage *scaledImg = nil;\r\n\u00a0 UIImage *img1 = [[UIImage alloc] initWithContentsOfFile:path]; \/\/ get the image\r\n\u00a0 \u00a0if( img1 )\r\n\u00a0 {\r\n\u00a0 \u00a0 float scale = GetScaleForProportionalResize( img1.size, toSize, false, false );\r\n\u00a0 \u00a0 \u00a0CGImageRef cgImage = CreateCGImageFromUIImageScaled( img1, scale );\r\n\u00a0 \u00a0 \u00a0if( cgImage )\r\n\u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 scaledImg = [UIImage imageWithCGImage:cgImage]; \u00a0 \/\/ autoreleased\r\n\u00a0 \u00a0 \u00a0 CGImageRelease( cgImage );\r\n\u00a0 \u00a0 }<\/pre>\n<pre>    [img1 release];<\/pre>\n<pre>\u00a0 }\r\n\u00a0 return scaledImg;\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u041a\u0430\u043a \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u0443\u0441\u043a\u0438 \u0440\u0430\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430<\/strong><\/p>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0437\u0430\u0442\u043e\u043b\u043a\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0440\u0430\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u0443\u0447\u0443 \u0444\u0430\u0439\u043b\u043e\u0432, \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u0434:<\/p>\n<pre>@interface UIImage (Utilities)\r\n- (NSMutableArray*) getTilesWithSize:(CGSize)tileSize;\r\n@end\r\n\/\/------------------------------------------------------------------------\r\n@implementation UIImage (Utilities)\r\n- (NSMutableArray*) getTilesWithSize:(CGSize)tileSize\r\n{\r\n\u00a0 \u00a0 NSUInteger \u00a0 \u00a0 \u00a0countW = self.size.width \u00a0\/ tileSize.width;\r\n\u00a0 \u00a0 NSUInteger \u00a0 \u00a0 \u00a0countH = self.size.height \/ tileSize.height;\r\n\u00a0 \u00a0 NSMutableArray* array \u00a0= [NSMutableArray arrayWithCapacity:(countW * countH)];\r\n\u00a0 \u00a0 CGRect \u00a0 \u00a0 \u00a0 \u00a0 \u00a0rect \u00a0 = CGRectMake(0, 0, tileSize.width, tileSize.height);\r\n\u00a0 \u00a0 NSUInteger \u00a0 \u00a0 \u00a0w;\r\n\u00a0 \u00a0 NSUInteger \u00a0 \u00a0 \u00a0h;\r\n\u00a0 \u00a0 for (h = 0, rect.origin.y = 0; h &lt; countH; h++, rect.origin.y += tileSize.height)\r\n\u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 \u00a0 for (w = 0, rect.origin.x = 0; w &lt; countW; w++, rect.origin.x += tileSize.width)\r\n\u00a0 \u00a0 \u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 CGImageRef tileImageRef = CGImageCreateWithImageInRect(self.CGImage, rect);\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 [array addObject:[UIImage imageWithCGImage:tileImageRef]];\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 CGImageRelease(tileImageRef);\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 }\r\n\u00a0 \u00a0 return array;\r\n}\r\n@end<\/pre>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<pre>UIImage* image;\r\nNSMutableArray* normalImages;\r\nNSMutableArray* highlightedImages;\r\nimage = [UIImage imageNamed:@\"ImagesSet_Buttons_Normal.png\"];\r\nnormalImages = [image getTilesWithSize:CGSizeMake(66, 66)];\r\nimage = [UIImage imageNamed:@\"ImagesSet_Buttons_Highlighted.png\"];\r\nnormalImages = [image getTilesWithSize:CGSizeMake(66, 66)];<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u041a\u0430\u043a \u043e\u0431\u0440\u0435\u0437\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443<\/strong><\/p>\n<pre>\/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c UIImage \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e PNG-\u0444\u0430\u0439\u043b\u0430\r\nUIImage *image = [UIImage imageNamed:@\"prgBinary.jpg\"];\r\nUIImageView *imageView = [[UIImageView alloc] initWithImage:image];\r\n\u00a0\/\/ \u0411\u0435\u0440\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\r\nCGSize size = [image size];\r\n\u00a0\/\/ \u0414\u0435\u043b\u0430\u0435\u043c imageView \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0430\u0448\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\r\n[imageView setFrame:CGRectMake(0, 0, size.width, size.height)];\r\n[[self view] addSubview:imageView];\r\n[imageView release]; \u00a0 \u00a0\r\n\u00a0\/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u043e \u043e\u0431\u0440\u0435\u0437\u0430\u0442\u044c\r\nCGRect rect = CGRectMake(size.width \/ 4, size.height \/ 4 ,\r\n\u00a0 \u00a0 (size.width \/ 2), (size.height \/ 2));\r\n\u00a0\/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c bitmap \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\r\nCGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect);\r\nUIImage *img = [UIImage imageWithCGImage:imageRef];\r\nCGImageRelease(imageRef);\r\n\u00a0\/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 bitmap\r\nimageView = [[UIImageView alloc] initWithImage:img];\r\n[imageView setFrame:CGRectMake(0, 200, (size.width \/ 2), (size.height \/ 2))];\r\n[[self view] addSubview:imageView];\r\n[imageView release];<\/pre>\n<p><strong>\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u043d\u043e-\u0431\u0435\u043b\u044b\u043c<\/strong><\/p>\n<pre>- (UIImage *)convertImageToGrayScale:(UIImage *)image\r\n{\r\n\u00a0 CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);\r\n\u00a0 \u00a0\/\/ \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0427\u0435\u0440\u043d\u043e-\u0431\u0435\u043b\u0443\u044e \u043f\u0430\u043b\u0438\u0442\u0440\u0443\r\n\u00a0 CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();\r\n\u00a0 \u00a0\/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c bitmap \u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\r\n\u00a0 CGContextRef context = CGBitmapContextCreate(nil, image.size.width, image.size.height, 8, 0, colorSpace, kCGImageAlphaNone);\r\n\u00a0 CGContextDrawImage(context, imageRect, [image CGImage]);\r\n\u00a0 CGImageRef imageRef = CGBitmapContextCreateImage(context);\r\n\u00a0 \u00a0\/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c UIImage \u00a0\r\n\u00a0 UIImage *newImage = [UIImage imageWithCGImage:imageRef];\r\n\u00a0 \u00a0\/\/ \u0420\u0435\u043b\u0438\u0437\u0438\u043c \u043f\u0430\u043b\u0438\u0442\u0440\u0443, \u0431\u0438\u0442\u043c\u0430\u043f \u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\r\n\u00a0 CGColorSpaceRelease(colorSpace);\r\n\u00a0 CGContextRelease(context);\r\n\u00a0 CFRelease(imageRef);\r\n\u00a0 \u00a0\/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0443\u0436\u0435 \u0447\u0435\u0440\u043d\u043e-\u0431\u0435\u043b\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\r\n\u00a0 return newImage;\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430<\/strong><\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/p>\n<pre>- (id)init\r\n{\r\n\u00a0 if (self = [super init])\r\n\u00a0 {\r\n\u00a0 \u00a0 self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 self.view.backgroundColor = [UIColor grayColor];\r\n\u00a0 \u00a0 \u00a0\/\/ \u041a\u043d\u043e\u043f\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043a\u0430\u043c\u0435\u0440\u044b\r\n\u00a0 \u00a0 button = [[UIButton alloc] initWithFrame:CGRectMake(80, 55, 162, 53)]; \u00a0 \u00a0\r\n\u00a0 \u00a0 [button setBackgroundImage:[UIImage imageNamed:@\"Camera.png\"] forState:UIControlStateNormal];\r\n\u00a0 \u00a0 [button addTarget:self action:@selector(buttonPressed:) forControlEvents: UIControlEventTouchUpInside]; \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0 [self.view addSubview:button];\r\n\u00a0 \u00a0 [button release];\r\n\u00a0 }\r\n\u00a0 \u00a0return self; \u00a0\r\n}<\/pre>\n<p>\u0412\u044b\u0437\u043e\u0432 UIGetScreenImage()<\/p>\n<pre>CGImageRef UIGetScreenImage(void);\r\n- (void)buttonPressed:(UIButton *)button\r\n{\r\n\u00a0 \/\/ \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043d \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0432 UIImage\r\n\u00a0 CGImageRef screen = UIGetScreenImage();\r\n\u00a0 UIImage* image = [UIImage imageWithCGImage:screen];\r\n\u00a0 CGImageRelease(screen);\r\n\u00a0 \u00a0\/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c UIImage \u0432 \u0444\u043e\u0442\u043e\u0430\u043b\u044c\u0431\u043e\u043c\r\n\u00a0 UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);\r\n}<\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432 \u0444\u043e\u0442\u043e\u0430\u043b\u044c\u0431\u043e\u043c<\/p>\n<pre>- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo\r\n{\r\n\u00a0 UIAlertView *alert;\r\n\u00a0 \u00a0\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f\r\n\u00a0 if (error)\r\n\u00a0 \u00a0 alert = [[UIAlertView alloc] initWithTitle:@\"\u041e\u0448\u0438\u0431\u043a\u0430\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 message:@\"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c.\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 delegate:self cancelButtonTitle:@\"Ok\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 otherButtonTitles:nil];\r\n\u00a0 else \/\/ \u0412\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e\r\n\u00a0 \u00a0 alert = [[UIAlertView alloc] initWithTitle:@\"\u0423\u0441\u043f\u0435\u0445\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 message:@\"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e.\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 delegate:self cancelButtonTitle:@\"Ok\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 otherButtonTitles:nil];\r\n\u00a0 [alert show];\r\n\u00a0 [alert release];\r\n}<\/pre>\n<!-- AddThis Advanced Settings generic via filter on the_content --><div align=\"right\"><div class=\"sharexyWidgetNoindexUniqueClassName\"><div id=\"shr_8817818\"><\/div><\/div><\/div><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>\u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u0418\u0442\u0430\u043a, \u043f\u043e\u0435\u0445\u0430\u043b\u0438!<\/p>\n<div align=\"right\">\n<div class=\"sharexyWidgetNoindexUniqueClassName\">\n<div id=\"shr_8817818\"><\/div>\n<\/div>\n<\/div>\n<p><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[],"_links":{"self":[{"href":"http:\/\/ilya2606.ru\/index.php?rest_route=\/wp\/v2\/posts\/379"}],"collection":[{"href":"http:\/\/ilya2606.ru\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ilya2606.ru\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ilya2606.ru\/index.php?rest_route=\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"http:\/\/ilya2606.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=379"}],"version-history":[{"count":13,"href":"http:\/\/ilya2606.ru\/index.php?rest_route=\/wp\/v2\/posts\/379\/revisions"}],"predecessor-version":[{"id":386,"href":"http:\/\/ilya2606.ru\/index.php?rest_route=\/wp\/v2\/posts\/379\/revisions\/386"}],"wp:attachment":[{"href":"http:\/\/ilya2606.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ilya2606.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=379"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ilya2606.ru\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}