日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS 实现美图秀秀

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS 实现美图秀秀 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



以上界面效果是單張圖片的編輯 :? 具體實現過程如下:

?

  • 第一個界面要實現兩個按鈕,? 1.1給按鈕添加點擊事件 ,圖片,??? 1.2.跳轉到系統相冊。
  • 兩個按鈕要有tag??? 跳轉到系統相冊 的代碼:@interface ViewController ()<UINavigationControllerDelegate, UIImagePickerControllerDelegate>

    - (IBAction)clicked:(UIButton*)sender {

    ???

    ?? if (sender.tag==0) {

    ? ? ? ? //單張編輯

    ? ? ? ? self.isEdit = YES;? //聲明成屬性后,點擊跳轉的時候就可以進行判斷是單張還是多張了

    ? ? }else{//拼接

    ?? ? ? self.isEdit = NO;

    ? ? ? ? self.selectedImageViews = [NSMutableArray array];

    ?? }

    //? ? self.isEdit = sender.tag==0?YES:NO;

    //? ? self.isEdit = sender.tag==0;

    ?? ?//獲取系統相冊:

    ? ? UIImagePickerController *ipc = [[UIImagePickerController alloc]init];

    ? ? [ipc setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

    ?? ipc.delegate = self;

    ? ? [self presentViewController:ipc animated:YES completion:nil];

    ???

    }//判斷第幾個navigationcontroller然后具體跳轉到哪個界面

    ?

    ?

    -(void)navigationController:(UINavigationController *)navigationControllerwillShowViewController:(UIViewController*)viewController animated:(BOOL)animated{

    ??

    ?? self.navi= navigationController;

    ? ? //判斷是編輯還是拼接

    ? ? if (!self.isEdit&&navigationController.viewControllers.count==2) {//拼接

    ??? ? ?

    ? ? ? ?//這里做的就是先區分,要是第二個拼接的話? 里面有相關代碼;

    ?? ? ? UIView *v = [[UIView alloc]initWithFrame:CGRectMake(0, self.view.bounds.size.height-100, 320, 100)];

    ?? ? ? v.backgroundColor = [UIColor redColor];

    ???

    ?? ? ? [viewController.view addSubview:v];

    ? ? ? ? self.sv = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 20, 320, 80)];

    ?? ? ? [v addSubview:self.sv];

    ??? ? ?

    ?? ? ? UIButton *doneBtn = [[UIButton alloc]initWithFrame:CGRectMake(260, 0, 60, 20)];

    ? ? ? ? [doneBtn addTarget:self action:@selector(doneAction) forControlEvents:UIControlEventTouchUpInside];

    ? ? ? ? [doneBtn setTitle:@"Done" forState:UIControlStateNormal];

    ?? ? ? [v addSubview:doneBtn];

    ?? }

    ???

    }

    ?

    //因為點擊跳轉后,需要將點擊的系統相冊的地址傳到下一個界面,? 因為系統相冊界面是調用的,是navigation的所以在跳轉的時候不能連線,只能通過,self.storyboard;

    - (void)imagePickerController:(UIImagePickerController *)pickerdidFinishPickingMediaWithInfo:(NSDictionary*)info{

    ?? ? UIImage *image = info[UIImagePickerControllerOriginalImage];//原始圖片的地址給uiimage;

    ???

    ? ? //判斷是編輯還是拼接

    ? ? if (self.isEdit) { 編輯:? 因為self.isEditBool是真值,所以:

    ?? ? ?

    ? ? ? ? //跳轉頁面

    ? ? ? ? EditViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"EditViewController"];

    ? ? ? ? vc.editImage = image;//創建一個新的 編輯頁面 然后進行跳轉

    ??? ? ?

    ? ? ? ? [self.navi pushViewController:vc animated:YES];

    ??? ? ?

    ??? ? ?

    ? ? }else{//拼接

    ??? ? ?

    ?? ? ? UIImageView *imageView= [[UIImageView alloc]initWithFrame:CGRectMake(80*self.selectedImageViews.count,0, 80, 80)];

    ??? ? ?

    ?? ? ? imageView.image =image;

    ?? ? ? [self.sv addSubview:imageView];

    ?? ? ? [self.selectedImageViews addObject:imageView];

    ? ? ? ? //設置滾動

    ?? ? ? self.sv.contentSize= CGSizeMake(self.selectedImageViews.count*80, 0);

    ??? ? ?

    ??? ? ?

    ?? }

    }

    ?

    ?

    3.邊框界面,以及繪圖頁面了:?? 先來說下頁面控件的情況:?? 視圖中: 最底下是個VIEW? 上面放了個uiimageview?? 然后放了個 邊框的? 一個繪制的;

    下面的選項按鈕 背景是個圖片, 3個按鈕??? 3個按鈕有選中狀態下的高亮圖片,如果在代碼中實現 這個按鈕的selected的話 就會將圖片顯示出來

    ?

    1實現步驟: 實現從系統相冊中選擇圖片 顯示到editviewcontroller里?? 然后實現 下面的scollView??將邊框添加進去。

  • 實現點擊按鈕不同的展示風格;
  • ?

    ?

    按鈕顯示:

    - (IBAction)mainPadClicked:(UIButton*)sender {

    ? ? //把之前顯示的隱藏掉

    ???

    ???

    ?? switch (sender.tag) {

    ? ? ? ? case 0://邊框

    ? ? ? ? ? ? //隱藏其它

    ?? ? ? ? ? self.effectSV.hidden= YES;

    ?? ? ? ? ? self.effectBtn.selected= NO;

    ?? ? ? ? ? self.painBtn.selected= NO;

    ?? ? ? ? ? self.painView.hidden= YES;

    ?? ? ? ? ? self.painBtn.selected= NO;

    ? ? ? ? ? ? self.drawView.userInteractionEnabled =NO;

    ??? ? ? ? ?

    ?? ? ? ? ? self.frameSV.hidden= !self.frameSV.hidden;

    ?? ? ? ? ? sender.selected= !self.frameSV.hidden;

    ?? ? ? ? ? break;

    ??? ? ? ? ?

    ? ? ? ? case 1://特效

    ??? ? ? ? ?

    ? ? ? ? ? ? //隱藏其它

    ?? ? ? ? ? self.frameSV.hidden= YES;

    ?? ? ? ? ? self.frameBtn.selected= NO;

    ?? ? ? ? ? self.painBtn.selected= NO;

    ?? ? ? ? ? self.painView.hidden= YES;

    ?? ? ? ? ? self.painBtn.selected= NO;

    ? ? ? ? ? ? self.drawView.userInteractionEnabled =NO;

    ??? ? ? ? ?

    ?? ? ? ? ? self.effectSV.hidden= !self.effectSV.hidden;

    ?? ? ? ? ? sender.selected= !self.effectSV.hidden;

    ??? ? ? ? ?

    ?? ? ? ? ? break;

    ? ? ? ? case 2://繪制

    ? ? ? ? ? ? //隱藏其它

    ?? ? ? ? ? self.effectSV.hidden= YES;

    ?? ? ? ? ? self.effectBtn.selected= NO;

    ?? ? ? ? ? self.frameSV.hidden= YES;

    ?? ? ? ? ? self.frameBtn.selected= NO;

    ??? ? ? ? ?

    ??? ? ? ? ?

    ?? ? ? ? ? self.painView.hidden= !self.painView.hidden;

    ?? ? ? ? ? sender.selected= !self.painView.hidden;

    ? ? ? ? ? ? self.drawView.userInteractionEnabled =self.painBtn.selected;

    ?? ? ? ? ? break;

    ?? }

    ???

    ???

    }

    ?

    然后再程序的入口出把點擊的圖片傳過來, B頁面需要聲明變量接收

    - (void)viewDidLoad {

    ? ? [super viewDidLoad];

    ?? self.currentColor= [UIColor blackColor];

    ? ? self.currentWidth = 1;

    ?

    ? ? self.drawView.delegate = self;

    ???

    ?? //把傳遞過來的圖片顯示

    ? ?self.editImageView.image = self.editImage;

    ?

    ? ? // 把邊框的SV初始化

    ? ? [self initFrameSV];

    ? ? //初始化特效的SV里面的內容

    ? ? [self initEffectSV];

    ? ? //添加保存按鈕

    ? ? UIBarButtonItem *saveItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(saveAction)];

    ? ? self.navigationItem.rightBarButtonItem = saveItem;

    ???

    }

    ?

    給滑動控件中添加邊框圖片:

    -(void)initFrameSV{

    ?? for (inti=0; i<23;i++) {

    ?? ? ? UIButton *frameBtn = [[UIButton alloc]initWithFrame:CGRectMake(50*i, 0, 50, 70)];

    ?? ? ? frameBtn.tag = i;

    ?? ? ? NSString *imageName = [NSString stringWithFormat:@"i-%02d.png",i];

    ?? ? ? ?//如果不是設置背景圖片的話?

    ? ? ? ? [frameBtn setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];

    ?? ? ? ?//代碼的點擊事件,沒有實現。?? 相框中添加按鈕:

    ? ? ? ? [frameBtn setImage:[UIImage imageNamed:@"icon_frame_select.png"] forState:UIControlStateSelected];

    ? ? ? ? [frameBtn addTarget:self action:@selector(clickedFrame:)forControlEvents:UIControlEventTouchUpInside];

    ?? ? ? [self.frameSV addSubview:frameBtn];

    ??? ? ?

    ?? }

    ???

    ?? self.frameSV.contentSize = CGSizeMake(50*23, 0);

    }

    ?

    ?

    接下來的工作就是當點擊一個邊框按鈕的時候? 右下角標的選中狀態只有一個 點擊任何一個 其他的都不顯示那個角標

    ?

    -(void)clickedFrame:(UIButton*)btn{

    ? ? //拿到所有的邊框按鈕讓每一個都不選中

    ?? for (UIView*subView in self.frameSV.subviews){

    ??? ? ?

    ?? ? ? if ([subView isMemberOfClass:[UIButtonclass]]) {

    ?? ? ? ? ? UIButton*button = (UIButton*)subView;

    ?? ? ? ? ? button.selected= NO;

    ?? ? ? }

    ?? ? ? ?//以上的代碼是實現在加邊框的時候? 那個按鈕的圖片? 下面有個對勾。???? 下面的代碼是真正實現加邊框

    ?? }

    ?? btn.selected = YES;

    ? ? NSString *imageName = [NSString stringWithFormat:@"%02d.png",btn.tag];//這里一個很重要的地方是 btn.tag= I;

    ?? self.frameIV.image = [UIImageimageNamed:imageName];

    ???

    }

    ?

    //到上面的位置的話? 加邊框的效果就實現完了;

    ?

    ?

    ?

    4下面的代碼是實現特效

    總結

    以上是生活随笔為你收集整理的IOS 实现美图秀秀的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。