IOS 实现美图秀秀
以上界面效果是單張圖片的編輯 :? 具體實現過程如下:
?
兩個按鈕要有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.isEdit是Bool是真值,所以:
?? ? ?
? ? ? ? //跳轉頁面
? ? ? ? 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 实现美图秀秀的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Simlink 生成A2L标定量和检测量
- 下一篇: ssh被暴力猜解登录密码,利用panda