Ios-queue Group

Source: Internet
Author: User
<span id="Label3"></p><pre><span style="font-size: 14pt;"><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">HMVIEWCONTROLLER.M</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">03-queue Group (learn)</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Created by Apple on 14-9-16.</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Copyright (c) 2014 Heima. All Rights Reserved.</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">#import</span></span> <span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">HMViewController.h</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1. Download 2 pictures respectively: Big picture, LOGO</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2. Merge 2 photos</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3. Display to a imageview body</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">@interface</span></span><span style="color: #000000;"><span style="color: #000000;">hmviewcontroller () @property (weak, nonatomic) iboutlet uiimageview</span></span>*<span style="color: #000000;"><span style="color: #000000;">imageView, @property (nonatomic, Strong) UIImage</span></span>*<span style="color: #000000;"><span style="color: #000000;">image1, @property (nonatomic, Strong) UIImage</span></span>*<span style="color: #000000;"><span style="color: #000000;">image2;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">@end</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">@implementation</span></span><span style="color: #000000;"><span style="color: #000000;">Hmviewcontroller</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Viewdidload{[super viewdidload]; }</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2D Drawing quartz2d</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">merged Image--watermark</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span>) touchesbegan: (nsset *) touches withevent: (uievent *)<span style="color: #0000ff;"><span style="color: #0000ff;">Event</span></span><span style="color: #000000;"><span style="color: #000000;">{ </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1. Queue Groups</span></span>dispatch_group_t Group =<span style="color: #000000;"><span style="color: #000000;">dispatch_group_create (); dispatch_queue_t Queue</span></span>= Dispatch_get_global_queue (dispatch_queue_priority_default,<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2. Download picture 1</span></span>__block UIImage *image1 =<span style="color: #000000;"><span style="color: #000000;">nil; Dispatch_group_async (group, queue,</span></span>^<span style="color: #000000;"><span style="color: #000000;">{nsurl</span></span>*URL1 = [nsurl urlwithstring:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">http://g.hiphotos.baidu.com/image/pic/item/f2deb48f8c5494ee460de6182ff5e0fe99257e80.jpg</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSData</span></span>*data1 =<span style="color: #000000;"><span style="color: #000000;">[nsdata datawithcontentsofurl:url1]; Image1</span></span>=<span style="color: #000000;"><span style="color: #000000;">[UIImage imagewithdata:data1]; }); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3. Download Picture 2</span></span>__block UIImage *image2 =<span style="color: #000000;"><span style="color: #000000;">nil; Dispatch_group_async (group, queue,</span></span>^<span style="color: #000000;"><span style="color: #000000;">{nsurl</span></span>*URL2 = [nsurl urlwithstring:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSData</span></span>*DATA2 =<span style="color: #000000;"><span style="color: #000000;">[nsdata datawithcontentsofurl:url2]; Image2</span></span>=<span style="color: #000000;"><span style="color: #000000;">[UIImage imagewithdata:data2]; }); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">4. Merge Pictures (ensure that all tasks within the group are executed, and then execute the block inside the Notify Function)</span></span>Dispatch_group_notify (group, queue, ^<span style="color: #000000;"><span style="color: #000000;">{ </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">to <span style="color: #008000;">Open a bitmap context</span></span>Uigraphicsbeginimagecontextwithoptions (image1.size, NO,<span style="color: #800080;"><span style="color: #800080;">0.0</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">draw the 1th picture</span></span>CGFloat image1w =<span style="color: #000000;"><span style="color: #000000;">image1.size.width; CGFloat image1h</span></span>=<span style="color: #000000;"><span style="color: #000000;">image1.size.height; [image1 Drawinrect:cgrectmake (</span></span><span style="color: #800080;"><span style="color: #800080;">0</span></span>,<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">, image1w, image1h)]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">draw the 2nd picture</span></span>CGFloat image2w = Image2.size.width *<span style="color: #800080;"><span style="color: #800080;">0.5</span></span><span style="color: #000000;"><span style="color: #000000;">; CGFloat image2h</span></span>= Image2.size.height *<span style="color: #800080;"><span style="color: #800080;">0.5</span></span><span style="color: #000000;"><span style="color: #000000;">; CGFloat image2y</span></span>= image1h-<span style="color: #000000;"><span style="color: #000000;">image2h; [image2 Drawinrect:cgrectmake (</span></span><span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">, image2y, image2w, image2h)]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">get the picture in context</span></span>UIImage *fullimage =<span style="color: #000000;"><span style="color: #000000;">Uigraphicsgetimagefromcurrentimagecontext (); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">End Context</span></span><span style="color: #000000;"><span style="color: #000000;">Uigraphicsendimagecontext (); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">5. Go back to the main thread to display the picture</span></span>Dispatch_async (dispatch_get_main_queue (), ^<span style="color: #000000;"><span style="color: #000000;">{self.imageView.image</span></span>=<span style="color: #000000;"><span style="color: #000000;">fullimage; }); });}</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) test2{</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Asynchronous Download</span></span>Dispatch_async (dispatch_get_global_queue (dispatch_queue_priority_default,<span style="color: #800080;"><span style="color: #800080;">0</span></span>), ^<span style="color: #000000;"><span style="color: #000000;">{ </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1. Download the 1th one</span></span>Nsurl *URL1 = [nsurl urlwithstring:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">http://g.hiphotos.baidu.com/image/pic/item/f2deb48f8c5494ee460de6182ff5e0fe99257e80.jpg</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSData</span></span>*data1 =<span style="color: #000000;"><span style="color: #000000;">[nsdata datawithcontentsofurl:url1]; Self.image1</span></span>=<span style="color: #000000;"><span style="color: #000000;">[UIImage imagewithdata:data1]; [self bindimages]; }); Dispatch_async (dispatch_get_global_queue (dispatch_queue_priority_default,</span></span><span style="color: #800080;"><span style="color: #800080;">0</span></span>), ^<span style="color: #000000;"><span style="color: #000000;">{ </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2. Download the 2nd one</span></span>Nsurl *url2 = [nsurl urlwithstring:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSData</span></span>*DATA2 =<span style="color: #000000;"><span style="color: #000000;">[nsdata datawithcontentsofurl:url2]; Self.image2</span></span>=<span style="color: #000000;"><span style="color: #000000;">[UIImage imagewithdata:data2]; [self bindimages]; });}</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) bindimages{</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(self.image1 = = Nil | | self.image2 = NIL)<span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3. Merging pictures</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">to <span style="color: #008000;">Open a bitmap context</span></span>Uigraphicsbeginimagecontextwithoptions (self.image1.size, NO,<span style="color: #800080;"><span style="color: #800080;">0.0</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">draw the 1th picture</span></span>CGFloat image1w =<span style="color: #000000;"><span style="color: #000000;">self.image1.size.width; CGFloat image1h</span></span>=<span style="color: #000000;"><span style="color: #000000;">self.image1.size.height; [self.image1 Drawinrect:cgrectmake (</span></span><span style="color: #800080;"><span style="color: #800080;">0</span></span>,<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">, image1w, image1h)]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">draw the 2nd picture</span></span>CGFloat image2w = Self.image2.size.width *<span style="color: #800080;"><span style="color: #800080;">0.5</span></span><span style="color: #000000;"><span style="color: #000000;">; CGFloat image2h</span></span>= Self.image2.size.height *<span style="color: #800080;"><span style="color: #800080;">0.5</span></span><span style="color: #000000;"><span style="color: #000000;">; CGFloat image2y</span></span>= image1h-<span style="color: #000000;"><span style="color: #000000;">image2h; [self.image2 Drawinrect:cgrectmake (</span></span><span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">, image2y, image2w, image2h)]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">get the picture in context</span></span>UIImage *fullimage =<span style="color: #000000;"><span style="color: #000000;">Uigraphicsgetimagefromcurrentimagecontext (); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">End Context</span></span><span style="color: #000000;"><span style="color: #000000;">Uigraphicsendimagecontext (); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">4. Go back to the main thread to display the picture</span></span>Dispatch_async (dispatch_get_main_queue (), ^<span style="color: #000000;"><span style="color: #000000;">{self.imageView.image</span></span>=<span style="color: #000000;"><span style="color: #000000;">fullimage; });}</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) test1{</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Asynchronous Download</span></span>Dispatch_async (dispatch_get_global_queue (dispatch_queue_priority_default,<span style="color: #800080;"><span style="color: #800080;">0</span></span>), ^<span style="color: #000000;"><span style="color: #000000;">{ </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">1. Download the 1th one</span></span>Nsurl *URL1 = [nsurl urlwithstring:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">http://g.hiphotos.baidu.com/image/pic/item/f2deb48f8c5494ee460de6182ff5e0fe99257e80.jpg</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSData</span></span>*data1 =<span style="color: #000000;"><span style="color: #000000;">[nsdata datawithcontentsofurl:url1]; UIImage</span></span>*image1 =<span style="color: #000000;"><span style="color: #000000;">[UIImage imagewithdata:data1]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">2. Download the 2nd one</span></span>Nsurl *url2 = [nsurl urlwithstring:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]; NSData</span></span>*DATA2 =<span style="color: #000000;"><span style="color: #000000;">[nsdata datawithcontentsofurl:url2]; UIImage</span></span>*image2 =<span style="color: #000000;"><span style="color: #000000;">[UIImage imagewithdata:data2]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">3. Merging pictures</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">to <span style="color: #008000;">Open a bitmap context</span></span>Uigraphicsbeginimagecontextwithoptions (image1.size, NO,<span style="color: #800080;"><span style="color: #800080;">0.0</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">draw the 1th picture</span></span>CGFloat image1w =<span style="color: #000000;"><span style="color: #000000;">image1.size.width; CGFloat image1h</span></span>=<span style="color: #000000;"><span style="color: #000000;">image1.size.height; [image1 Drawinrect:cgrectmake (</span></span><span style="color: #800080;"><span style="color: #800080;">0</span></span>,<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">, image1w, image1h)]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">draw the 2nd picture</span></span>CGFloat image2w = Image2.size.width *<span style="color: #800080;"><span style="color: #800080;">0.5</span></span><span style="color: #000000;"><span style="color: #000000;">; CGFloat image2h</span></span>= Image2.size.height *<span style="color: #800080;"><span style="color: #800080;">0.5</span></span><span style="color: #000000;"><span style="color: #000000;">; CGFloat image2y</span></span>= image1h-<span style="color: #000000;"><span style="color: #000000;">image2h; [image2 Drawinrect:cgrectmake (</span></span><span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">, image2y, image2w, image2h)]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">get the picture in context</span></span>UIImage *fullimage =<span style="color: #000000;"><span style="color: #000000;">Uigraphicsgetimagefromcurrentimagecontext (); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">End Context</span></span><span style="color: #000000;"><span style="color: #000000;">Uigraphicsendimagecontext (); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">4. Go back to the main thread to display the picture</span></span>Dispatch_async (dispatch_get_main_queue (), ^<span style="color: #000000;"><span style="color: #000000;">{self.imageView.image</span></span>=<span style="color: #000000;"><span style="color: #000000;">fullimage; }); });}</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">@end</span></span></span></pre><p><p></p></p><p><p>Ios-queue Group</p></p></span>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.