iOS 는 그림 확대 와 길 게 누 르 면 그림 을 저장 하 는 예제 를 실현 합 니 다.
실명 인증 으로 신분증 을 올 리 거나 은행 카드 를 귀속 시 키 는 등 사업 에서 만 날 수 밖 에 없다.실제 작업 에서 사진 을 올 리 는 것 과 관련 될 수 있 습 니 다.페이지 레이아웃 을 할 때 그림 이 한 장 이 아 닐 수도 있 습 니 다.구조의 미관 등 요 소 를 고려 하여 그림 을 표시 하 는 위치 가 작 아 졌 습 니 다.올 린 그림 이 뚜렷 한 지,내용 이 완전 한 지 확인 하려 면 크게 놓 아야 실현 할 수 있 습 니 다.다음은 제 가 포장 한 유형 을 공유 하 겠 습 니 다.그림 의 크기 조정 기능 을 완벽 하 게 실현 하 였 습 니 다.
또한 이러한 박문 들 은 제 가 일상적으로 개발 한 기술 총화 에서 비롯 된 것 입 니 다.시간 이 허락 되 는 상황 에서 저 는 기술 점 에 대해 iOS,Android 두 가지 버 전 을 공유 하고 여러분 이 참고 할 수 있 도록 demo 를 첨부 하 겠 습 니 다.만약 에 다른 기술 점 이 필요 하 다 면 글 뒤에 댓 글 을 남 길 수 있 습 니 다.저 는 최선 을 다 해 여러분 을 도 울 것 입 니 다.
2.사고 분석 실현
실현 사고 분석 에 따라 한 걸음 한 걸음 인 코딩 을 실현 한다.
1.UIImageView 에 제스처 추가
self.myImageView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 150, SCREEN_WIDTH-100, SCREEN_WIDTH-100)];
self.myImageView.image = [UIImage imageNamed:@"bankcard"];
//
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scanBigImageClick:)];
[_myImageView addGestureRecognizer:tapGestureRecognizer];
[_myImageView setUserInteractionEnabled:YES];
[self.view addSubview:_myImageView];
2.NSObject 를 계승 하 는 FBYImageZoom 클래스 패키지
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface FBYImageZoom : NSObject
@end
3.드 나 드 는 UIImageView 를 받 을 수 있 는 함 수 를 작성
/**
* @param contentImageview imageView
*/
+(void)ImageZoomWithImageView:(UIImageView *)contentImageview;
4.들 어 오 는 UIImageView 에 따라 Window 에 다시 그립 니 다.
+(void)ImageZoomWithImageView:(UIImageView *)contentImageview{
UIWindow *window = [UIApplication sharedApplication].keyWindow;
[self scanBigImageWithImage:contentImageview.image frame:[contentImageview convertRect:contentImageview.bounds toView:window]];
}
5.확대 후 배경 보기 의 색상 과 투명도 추가
//
UIWindow *window = [UIApplication sharedApplication].keyWindow;
//
UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
[backgroundView setBackgroundColor:[UIColor colorWithRed:107/255.0 green:107/255.0 blue:99/255.0 alpha:0.6]];
6.이미지 뷰 확대 애니메이션 으로 보 여주 기
// ImageView
[UIView animateWithDuration:0.4 animations:^{
CGFloat y,width,height;
y = ([UIScreen mainScreen].bounds.size.height - image.size.height * [UIScreen mainScreen].bounds.size.width / image.size.width) * 0.5;
//
width = [UIScreen mainScreen].bounds.size.width;
//
height = image.size.height * [UIScreen mainScreen].bounds.size.width / image.size.width;
[imageView setFrame:CGRectMake(0, y, width, height)];
// !
[backgroundView setAlpha:1];
} completion:^(BOOL finished) {
}];
7.ImageView 원본 사 이 즈 를 복원 하 는 tap 클릭 이벤트 추가
// ->
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideImageView:)];
[backgroundView addGestureRecognizer:tapGestureRecognizer];
/**
* imageView
*/
+(void)hideImageView:(UITapGestureRecognizer *)tap{
UIView *backgroundView = tap.view;
// imageview
UIImageView *imageView = [tap.view viewWithTag:1024];
//
[UIView animateWithDuration:0.4 animations:^{
[imageView setFrame:oldframe];
[backgroundView setAlpha:0];
} completion:^(BOOL finished) {
[backgroundView removeFromSuperview];
}];
}
8.완료 후 배경 보기 삭제
// ->
[backgroundView removeFromSuperview];
4.프로젝트 실제 사용1.패키지 클래스 FBYImageZoom 도입
#import "FBYImageZoom.h"
2.UIImageView 에 제스처 추가
//
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scanBigImageClick:)];
3.패키지 클래스 함수 호출
//
-(void)scanBigImageClick:(UITapGestureRecognizer *)tap{
NSLog(@" ");
UIImageView *clickedImageView = (UIImageView *)tap.view;
[FBYImageZoom ImageZoomWithImageView:clickedImageView];
}
자,여기 서 사진 을 눌 러 서 전체 화면 으로 확대 하면 됩 니 다.4.그림 을 길 게 눌 러 저장
또한 긴 버튼 으로 그림 을 저장 하 는 기능 을 실현 하 는데 이 기능 은 매우 간단 하 다
우선 긴 제스처 를 늘 려 주세요.
//
UILongPressGestureRecognizer *longTap = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(imglongTapClick:)];
//
[_myImageView addGestureRecognizer:longTap];
그리고 제스처 로 경고 보 기 를 길 게 꺼 내 확인 합 니 다.
-(void)imglongTapClick:(UILongPressGestureRecognizer*)gesture
{
if(gesture.state==UIGestureRecognizerStateBegan)
{
UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@" " message:nil preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@" " style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
NSLog(@" ");
}];
UIAlertAction *confirm = [UIAlertAction actionWithTitle:@" " style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
NSLog(@" ");
//
UIImageWriteToSavedPhotosAlbum(self.myImageView.image,self,@selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:),nil);
}];
[alertControl addAction:cancel];
[alertControl addAction:confirm];
[self presentViewController:alertControl animated:YES completion:nil];
}
}
마지막 으로 그림 저장 후 리 셋
- (void)imageSavedToPhotosAlbum:(UIImage*)image didFinishSavingWithError: (NSError*)error contextInfo:(id)contextInfo
{
NSString *message;
if(!error) {
message =@" ";
UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@" " message:message preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *action = [UIAlertAction actionWithTitle:@" " style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
}];
[alertControl addAction:action];
[self presentViewController:alertControl animated:YES completion:nil];
}else
{
message = [error description];
UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@" " message:message preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *action = [UIAlertAction actionWithTitle:@" " style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
}];
[alertControl addAction:action];
[self presentViewController:alertControl animated:YES completion:nil];
}
}
여기 서 클릭 이미지 확대 와 길 게 누 르 면 이미지 저장 기능 이 모두 실현 되 고 demo 소스 코드 는 이미github에 놓 여 있 습 니 다.5.프로젝트 전시
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.