이미지 자르기


- (IBAction)CaptureAction:(id)sender {

    NSLog(@"캡쳐 버튼 눌렸습니다.");


        CGSize screenS = myImageView.frame.size;

        CGFloat delX = myImageView.image.size.width / screenS.width;

        CGFloat delY = myImageView.image.size.height / screenS.height;


        NSLog(@"myImageView.image.size.width : %f" ,myImageView.image.size.width );

        NSLog(@"myImageView.image.size.height : %f" ,myImageView.image.size.height );

        NSLog(@"screenS.width : %f" ,screenS.width );

        NSLog(@"screenS.height : %f" ,screenS.height );

        NSLog(@"delX : %f" ,delX );

        NSLog(@"delY : %f" ,delY );

    

        NSLog(@"viewFinder.frame.origin.x : %f" ,viewFinder.frame.origin.x );

        NSLog(@" viewFinder.frame.origin.y : %f" ,viewFinder.frame.origin.y );

        NSLog(@"viewFinder.bounds.size.width : %f" ,viewFinder.bounds.size.width );

        NSLog(@"viewFinder.bounds.size.height : %f" ,viewFinder.bounds.size.height );

    

        NSLog(@"***********************************************************************" );

    

        NSLog(@"viewFinder.frame.origin.x  * delX : %f" ,viewFinder.frame.origin.x * delX );

        NSLog(@" viewFinder.frame.origin.y * delY : %f" ,viewFinder.frame.origin.y * delY );

        NSLog(@"viewFinder.bounds.size.width * delX : %f" ,viewFinder.bounds.size.width * delX);

        NSLog(@"viewFinder.bounds.size.height  * delY : %f" ,viewFinder.bounds.size.height * delY );

    


    CGRect sourceRect = CGRectMake(viewFinder.frame.origin.x * delX, (viewFinder.frame.origin.y -110)* delY, viewFinder.bounds.size.width * delX, viewFinder.bounds.size.height * delY);

    CGImageRef imageRef = CGImageCreateWithImageInRect(myImageView.image.CGImage, sourceRect);

    UIImage *cropImage = [UIImage imageWithCGImage:imageRef];

    CGImageRelease(imageRef);


    ImageVC *imageVC = [[ImageVC alloc]init];

    imageVC.cropedimage = cropImage;

    [self presentViewController:imageVC animated:YES completion:nil];

    

}

UIpangesture로 UIView 옮기기& 특정 프레임 넘어가지 않게 설정



소스



#import "ViewController.h"


@interface ViewController (){

    

    //사진틀

    IBOutlet UIImageView *myImageView;

    //뷰파인더를 옮기기 전 위치

    CGPoint beforPoint;


    

    //뷰파인더

    UIView *viewFinder;

    //뷰파인더를 감싸고 있는 네 개의 점.

    UIView *leftTopPoint;

    UIView *rightTopPoint;

    UIView *leftDownPoint;

    UIView *rightDownPoint;

    

    

    UIBezierPath *blackPath;    //검은색 블러

    UIBezierPath *framePath;    //포커스

    CAShapeLayer *fillLayer;

    

}


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

   //1.

    blackPath = [UIBezierPath bezierPathWithRect:self.view.frame];  //흐리게 블러 처리할 부분 : View 전체 지정

    

        //이미지뷰의 제일 왼쪽 모서리 구하기

        float startXpoint =  myImageView.frame.origin.x;

        float startYpoint =  myImageView.frame.origin.y;

    

    //뷰파인더

    viewFinder = [[UIView alloc] initWithFrame:CGRectMake(startXpoint, startYpoint, 100, 100)];

    viewFinder.backgroundColor = [UIColor clearColor];

    //viewFinder.center = self.view.center;

    viewFinder.layer.borderColor = [UIColor lightGrayColor].CGColor;

    viewFinder.layer.borderWidth= 1.0f;

    [self.view addSubview:viewFinder];

    

    framePath = [UIBezierPath bezierPathWithRect:viewFinder.frame];

    [blackPath appendPath:framePath];

    blackPath.usesEvenOddFillRule = YES;

    

    

    //오버레이뷰 : 약간 어둡게

    fillLayer = [CAShapeLayer layer];

    fillLayer.path = blackPath.CGPath;                                       //1.번에서 지정한 범위 그대로 설정

    fillLayer.fillRule = kCAFillRuleEvenOdd;

    fillLayer.fillColor = [UIColor blackColor].CGColor;               //검은색 바탕

    fillLayer.opacity = 0.4;                                                            //약간 흐리게

    [self.view.layer addSublayer:fillLayer];                                 //루트뷰 레이어에 오버레이뷰 추가

    

    

    //뷰파인더 위치 이동 제스쳐 이벤트

    UIPanGestureRecognizer *panResizeGestureViewFinder =[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(resizeTranslateViewFinder:)];

    [viewFinder addGestureRecognizer:panResizeGestureViewFinder];

    

}




//파인더뷰 드래그

-(void)resizeTranslateViewFinder:(UIPanGestureRecognizer *) recognizer{

    

    //드래그 후 위치값

    CGPoint afterPoint = [recognizer locationInView:viewFinder.superview];

    float finderX =  viewFinder.frame.origin.x;

    float finderY = viewFinder.frame.origin.y;

//    float beforX = beforPoint.x;

//    float beforY = beforPoint.y;

    float afterX = afterPoint.x;

    float afterY = afterPoint.y;

//    NSLog(@"finderX : %f  ,  finderY: %f" ,finderX , finderY);

//    NSLog(@"beforX : %f  ,  beforY: %f" ,beforX , beforY);

//    NSLog(@"afterX : %f  ,  afterY: %f" ,afterX , afterY);

//

//

//

        if ([recognizer state] == UIGestureRecognizerStateBegan) {

            NSLog(@"시작");

            viewFinder.center = afterPoint;                                 //뷰파인더 재할당

            [self setTransParentViewFinderSetting];                 //뷰파인더 셋팅

            beforPoint = [recognizer locationInView:viewFinder.superview];

            //[viewFinder setNeedsDisplay];

        }else if([recognizer state] == UIGestureRecognizerStateChanged){

            NSLog(@"중간");

            //뷰 파인더가 이미지 뷰 가이드라인 넘어가지 않게 설정

            [self actionViewFinderGuideLine:finderX and:finderY and:afterX and:afterY and :afterPoint];

            

        }else if ([recognizer state] == UIGestureRecognizerStateEnded ){

            NSLog(@"종료");

              //뷰 파인더가 이미지 뷰 가이드라인 넘어가지 않게 설정

           [self actionViewFinderGuideLine:finderX and:finderY and:afterX and:afterY and :afterPoint];

    }


};



////뷰파인더(투명색) 위치 설정을 위한 메소드

-(void) setTransParentViewFinderSetting {

    //검은색배경 위치와 오버레이뷰 해제

    [blackPath removeAllPoints];

    [fillLayer removeFromSuperlayer];

    //검은색 바탕화면 다시 셋팅

    blackPath = [UIBezierPath bezierPathWithRect:self.view.frame];

    

    

    //드래그된 뷰파인더 위치를 framepath에(위치경로) 대입

    framePath = [UIBezierPath bezierPathWithRect:viewFinder.frame];

    

    //뷰파인더(투명) 경로를 검은색 바탕화면 경로에 더해주기

    [blackPath appendPath:framePath];

    blackPath.usesEvenOddFillRule = YES;

    

    //오버레이뷰 : 약간 어둡게

    fillLayer = [CAShapeLayer layer];

    fillLayer.path = blackPath.CGPath;                                       //1.번에서 지정한 범위 그대로 설정

    fillLayer.fillRule = kCAFillRuleEvenOdd;

    fillLayer.fillColor = [UIColor blackColor].CGColor;               //검은색 바탕

    fillLayer.opacity = 0.4;                                                            //약간 흐리게

    [self.view.layer addSublayer:fillLayer];                                 //루트뷰 레이어에 오버레이뷰 추가

    

}




  //뷰 파인더가 이미지 뷰 가이드라인 넘어가지 않게 설정

-(void)actionViewFinderGuideLine : (float) finderX and:(float)finderY and:(float)afterX and:(float)afterY and:(CGPoint)afterPoint{

    //*왼쪽테두리 넘지 못함

    if(finderX <= 0.0){

        viewFinder.center = CGPointMake(50, afterY);

        [self setTransParentViewFinderSetting];

        //왼쪽테두리 + 위쪽 테두리 넘지 못한다.

        if(finderY <= myImageView.frame.origin.y){

            viewFinder.center = CGPointMake(50, myImageView.frame.origin.y + 50);

            [self setTransParentViewFinderSetting];

        }

        //왼쪽테두리 + 아래쪽 테두리 넘지 못함.

        if((finderY+100) >= myImageView.frame.origin.y+myImageView.frame.size.height){

            viewFinder.center = CGPointMake(50,( myImageView.frame.origin.y+myImageView.frame.size.height) - 50);

            [self setTransParentViewFinderSetting];

        }

        

        //*위쪽 테두리 넘지 못한다.

    }else  if(finderY <= myImageView.frame.origin.y){

        viewFinder.center = CGPointMake(afterX, myImageView.frame.origin.y + 50);

        [self setTransParentViewFinderSetting];

        //위쪽 테두리 + 오른쪽 테두리 넘지 못함

        if((finderX+100) >= myImageView.frame.size.width){

            viewFinder.center = CGPointMake(myImageView.frame.size.width - 50, myImageView.frame.origin.y + 50);

            [self setTransParentViewFinderSetting];

        }

        //위쪽 테두리 + 왼쪽 테두리 넘지 못함

        if(finderX <= 0.0){

            viewFinder.center = CGPointMake(50, afterY);

            [self setTransParentViewFinderSetting];

        }

        

        //*오른쪽 테두리 넘지 못한다.

    }else if((finderX+100) >= myImageView.frame.size.width){

        viewFinder.center = CGPointMake(myImageView.frame.size.width - 50, afterY);

        [self setTransParentViewFinderSetting];

        //오른쪽 테두리 + 위쪽 테두리 넘지 못함

        if(finderY <= myImageView.frame.origin.y){

            viewFinder.center = CGPointMake(myImageView.frame.size.width - 50, myImageView.frame.origin.y + 50);

            [self setTransParentViewFinderSetting];

            

        }

        //오른쪽 테두리 + 아래쪽 테두리 넘지 못함

        if((finderY+100) >= myImageView.frame.origin.y+myImageView.frame.size.height){

            viewFinder.center = CGPointMake(myImageView.frame.size.width - 50,( myImageView.frame.origin.y+myImageView.frame.size.height) - 50);

            [self setTransParentViewFinderSetting];

        }

        

        //*아래쪽 테두리 넘지 못함

    }else if((finderY+100) >= myImageView.frame.origin.y+myImageView.frame.size.height){

        viewFinder.center = CGPointMake(afterX,( myImageView.frame.origin.y+myImageView.frame.size.height) - 50);

        [self setTransParentViewFinderSetting];

        

        //아래쪽 + 왼쪽 테두리 넘지 못함

        if(finderX <= 0.0){

            viewFinder.center = CGPointMake(50, afterY);

            [self setTransParentViewFinderSetting];

        }

        

        //아래쪽 + 오른쪽 테두리 넘지 못함

        if((finderX+100) >= myImageView.frame.size.width){

            viewFinder.center = CGPointMake(myImageView.frame.size.width - 50, afterY);

            [self setTransParentViewFinderSetting];

        }

        

        

    }else{

        viewFinder.center = afterPoint;                                 //뷰파인더 재할당

        [self setTransParentViewFinderSetting];

        // [viewFinder setNeedsDisplay];

    }

}



- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}



@end





일정시간이 지난 파일 자동 삭제하기



앱실행할때 호출

//일정 시간 지난 미디어 파일 지우기


   [self deleteOverDateMediaFile];



//삭제 기준 날짜 가져오기

-(float)getDeleteStandardDateSeconds{

    

    //기준이 되는 날짜

    // 1. 3일 전 날짜를 구함 -> 데이터 포멧 변환 -> string으로 변환 -> 초 로변환 (568393200.000000)

    NSDateComponents* deltaComps = [[NSDateComponents alloc] init];

    [deltaComps setDay: -3];

    NSDate* tomorrow = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps toDate:[NSDate date] options:0];

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    dateFormatter.dateFormat = @"yyyyMMdd";

    NSString *dateString = [dateFormatter stringFromDate:tomorrow];

    NSLog(@"날짜 스트링 타입 : %@" , dateString);

    NSDate *dateDate = [dateFormatter dateFromString:dateString];

    NSLog(@"날짜 데이트 타입 : %@" , dateDate);

    NSTimeInterval seconds = [dateDate timeIntervalSinceReferenceDate];

    NSLog(@"초로변환 : %f" , seconds);

    return seconds;

}


//일정 시간 지난 미디어 파일 지우기

-(void)deleteOverDateMediaFile{


   //삭제 기준이 되는 초로 변환된 데이터

    float deleteDateStandardSeconds = [self getDeleteStandardDateSeconds];

    [self startDeleteMediaFile:@"/video" deleteStandardSeconds:deleteDateStandardSeconds ];

    [self startDeleteMediaFile:@"/audio" deleteStandardSeconds:deleteDateStandardSeconds ];

    [self startDeleteMediaFile:@"/photo" deleteStandardSeconds:deleteDateStandardSeconds ];

}



//비디오, 오디오, 사진 파일 삭제

-(void) startDeleteMediaFile :(NSString *) fileName  deleteStandardSeconds:(float) second{

    //파일 매니져

    NSFileManager *fm = [NSFileManager defaultManager];

    

    //최종 문서  폴더

    NSArray *DocumentDrectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    

    NSString *bigDir = [DocumentDrectory[0] stringByAppendingFormat:@"%@",fileName];

    

    //디렉토리 존재여부

    if ([fm isWritableFileAtPath:bigDir] ) {

        NSLog(@" %@ Dir가 존재합니다." , bigDir);

    }else{

        NSLog(@" %@ Dir가 존재하지 않습니다." ,bigDir);

    }

    

    //폴더 안에 있는 날짜 폴더들

    NSError *err;

    NSArray *smallDateFileArray = [fm contentsOfDirectoryAtPath:bigDir error:&err];

    if (err == nil) {

        

        //날짜 폴더 개수별로 개수

        for (int i = 0 ; i < (unsigned long)[smallDateFileArray count]; i++) {


            

            NSString *folderPathToDelete = [bigDir stringByAppendingFormat:@"/%@/",[smallDateFileArray objectAtIndex:i] ];

            

            //String 폴더명 가져와서 날짜 타입으로 바꾸고 숫자로 바꿔주기

            NSString *dateFileNameString =   [smallDateFileArray objectAtIndex:i];

            NSDateFormatter *fileDateFormatter = [[NSDateFormatter alloc] init];

            [fileDateFormatter setDateFormat:@"yyyyMMdd"];

            NSDate *fileNameDate = [fileDateFormatter dateFromString:dateFileNameString];

            NSTimeInterval haveToDeleteSeconds = [fileNameDate timeIntervalSinceReferenceDate];

            NSLog(@"초로변환2 : %f" , haveToDeleteSeconds);

            

            //삭제기준 날짜와 비교해서 작으면 (앞의 날짜) 경로를 가져와서 삭제 해준다.

            if (second > haveToDeleteSeconds) {

                

                NSError *deleteErr;


               [[NSFileManager defaultManager] removeItemAtPath:folderPathToDelete error:&deleteErr];

               

                if (deleteErr != nil) {

                    NSLog(@"이전 파일 삭제 중 오류가 발생했습니다.");

                    return;

                }else{

                    NSLog(@"삭제 성공!");

                    NSLog(@"%@ 폴더는 3일이 지난 파일이기 때문에 삭제 했습니다." , dateFileNameString);

                    NSLog(@"삭제 경로 : %@ " , folderPathToDelete);

                }

            }

        }

    }

}



날짜데이터를 문자로 변환


    //기준이 되는 날짜

    // 1. 3 날짜를 구함 -> 데이터 포멧 변환 -> string으로 변환 -> 로변환 (568393200.000000)

    NSDateComponents* deltaComps = [[NSDateComponents alloc] init];

    [deltaComps setDay:-3];

    NSDate* tomorrow = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps toDate:[NSDate date] options:0];

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    dateFormatter.dateFormat = @"yyyyMMdd";

    NSString *dateString = [dateFormatter stringFromDate:tomorrow];

    NSLog(@"날짜 스트링 타입 : %@" , dateString);

    NSDate *dateDate = [dateFormatter dateFromString:dateString];

    NSLog(@"날짜 데이트 타입 : %@" , dateDate);

    NSTimeInterval seconds = [dateDate timeIntervalSinceReferenceDate];

    NSLog(@"초로변환 : %f" , seconds);

    

    

    //String 폴더명 가져와서 날짜 타입으로 바꾸고 숫자로 바꿔주기

    NSString *dateFileNameString =  @"20190106";

    NSDateFormatter *fileDateFormatter = [[NSDateFormatter alloc] init];

    [fileDateFormatter setDateFormat:@"yyyyMMdd"];

    NSDate *fileNameDate = [fileDateFormatter dateFromString:dateFileNameString];

    NSTimeInterval haveToDeleteSeconds = [fileNameDate timeIntervalSinceReferenceDate];

    NSLog(@"초로변환2 : %f" , haveToDeleteSeconds);           //568393200.000000


AppDelegate 사용자 터치 감지하기


.h



#import <UIKit/UIKit.h>

#import "SecurityViewController.h"

@interface DetectTouchWindow : UIWindow

@property (strong,nonatomic) NSTimer *idleTimer; //타이머

@property (strong, nonatomic) UIWindow *window;


@end


.m


#import "DetectTouchWindow.h"


@implementation DetectTouchWindow

@synthesize idleTimer;


- (void)sendEvent:(UIEvent *)event {

    [super sendEvent:event];

    

    // 타이머 재설정 횟수를 줄이기 위해 시작 터치 또는 종료 터치에서만 타이머를 재설정.

    NSSet *allTouches = [event allTouches];

    if ([allTouches count] > 0) {

        // allTouches count only ever seems to be 1, so anyObject works here.

        //allTouches 수는 1로만 계산되므로 anyObject가 여기에서 작동합니다.

        UITouchPhase phase = ((UITouch *)[allTouches anyObject]).phase;

        if (phase == UITouchPhaseBegan || phase == UITouchPhaseEnded)

        [self resetIdleTimer];

    }

}


//터치가 되면 호출되는 함수

- (void)resetIdleTimer {

    if (idleTimer) {

        NSLog(@"DetectTouchWindow - 터치가 감지되고 있습니다.");

        [idleTimer invalidate];

        

    }

    

    idleTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(idleTimerExceeded) userInfo:nil repeats:NO] ;

}


- (void)idleTimerExceeded {

    NSLog(@"DetectTouchWindow - 화면 보호기 창을 띄웁니다.");

    

    //현재 띄워진 class 의 이름

    UIViewController *curentViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];

    NSString *currentSelectedCViewController = NSStringFromClass([[((UINavigationController *)curentViewController) visibleViewController] class]);

    

    //사진촬영 중일때, 녹음중일때 제외하고 화면보호기 띄우기 - !

    if([currentSelectedCViewController isEqualToString:@"CaptureMediaActivity"]){

        

         [self resetIdleTimer];

    }else if([currentSelectedCViewController isEqualToString:@"AudioRecorderActivity"]){

        

         [self resetIdleTimer];

    }else{

        //일정시간 이상 지나면 커스텀으로 만든 화면 보호기 띄워주기

        SecurityViewController *sv = [[SecurityViewController alloc]init];

        [[[UIApplication.sharedApplication keyWindow]rootViewController] presentViewController:sv animated:YES completion:nil];

    }

   

    


    

}







@end



사용

appDelegate .m 


위치에 위에서 만들어 놓은 UIWindow 상속해서 구현한 클래스로 window 재설정!!


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.

    

    window = [[DetectTouchWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    //self.window = [[MyKindOfWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];







최상위 viewController 클래스의 이름 가져오기



//현재 띄워진 class 의 이름 

UIViewController *curentViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];

 NSString *currentSelectedCViewController = NSStringFromClass([[((UINavigationController *)curentViewController) visibleViewController] class]);

ios 오토레이아웃 코드로 응용하기



.m




#import <UIKit/UIKit.h>


@interface AutoLayoutSampleViewController : UIViewController


@end

.h



#import "AutoLayoutSampleViewController.h"


@interface AutoLayoutSampleViewController ()


@property (nonatomic,strong) UILabel *bigTitle;         //암호 입력


@property (nonatomic,strong) UILabel *smallTitle;       //암호를 입력해주세요.


@property (nonatomic,strong) UITextField *textfield;    //텍스트 필드


@property (strong, nonatomic)  UIButton *one;

@property (strong, nonatomic)  UIButton *two;

@property (strong, nonatomic)  UIButton *three;

@property (strong, nonatomic)  UIButton *four;

@property (strong, nonatomic)  UIButton *five;

@property (strong, nonatomic)  UIButton *six;

@property (strong, nonatomic)  UIButton *seven;

@property (strong, nonatomic)  UIButton *eight;

@property (strong, nonatomic)  UIButton *zero;

@property (strong, nonatomic)  UIButton *nine;



@property (nonatomic, strong) UIButton *clearButton;

@property (nonatomic,strong) UIButton *deleteButton;


//비번

@property(nonatomic,strong)NSString *secretKey;

@end


@implementation AutoLayoutSampleViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    self.view.backgroundColor = UIColor.lightGrayColor;

    _secretKey = [[NSString alloc]init];

    

    //최상위 제목 라벨 생성 및 초기화

    self.bigTitle = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];

    self.bigTitle.translatesAutoresizingMaskIntoConstraints = NO;

    [self.bigTitle setFont:[UIFont boldSystemFontOfSize:24]];

    self.bigTitle.text = @"암호 입력";

    [self.view addSubview:self.bigTitle];

    


    //2. 타이틀 제약 조건 설정 x

    NSLayoutConstraint *bigTitleXConstraint = [NSLayoutConstraint

                                                                                                                 constraintWithItem:self.bigTitle

                                                                                                                 attribute:NSLayoutAttributeCenterX

                                                                                                                 relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                 toItem:self.view

                                                                                                                 attribute:NSLayoutAttributeCenterX

                                                                                                                 multiplier:1.0

                                                                                                                 constant:0.0];




    //3.타이틀 y 포지션

    NSLayoutConstraint *bigTitleYConstraint = [NSLayoutConstraint

                                                                                                                 constraintWithItem:self.bigTitle

                                                                                                                 attribute:NSLayoutAttributeTop

                                                                                                                 relatedBy:NSLayoutRelationEqual

                                                                                                                 toItem:self.view

                                                                                                                 attribute:NSLayoutAttributeTop

                                                                                                                 multiplier:1.0f

                                                                                                                 constant:self.view.frame.size.height / 7];


    //4.슈퍼뷰에 좌버튼 추가

    [self.view addConstraints:@[bigTitleXConstraint, bigTitleYConstraint]];




    

                                                                                        /*중간 알림 라벨*/

    

    //중간 알림 라벨 생성 및 초기화

    self.smallTitle = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 150, 30)];

    self.smallTitle.translatesAutoresizingMaskIntoConstraints = NO;

    self.smallTitle.text = @"암호를 입력해 주세요";

    [self.view addSubview:self.smallTitle];

    

    

    // 제약 조건 설정 x

    NSLayoutConstraint *smallTitleXConstraint = [NSLayoutConstraint

                                               constraintWithItem:self.smallTitle

                                               attribute:NSLayoutAttributeCenterX

                                               relatedBy:NSLayoutRelationGreaterThanOrEqual

                                               toItem:self.view

                                               attribute:NSLayoutAttributeCenterX

                                               multiplier:1.0

                                               constant:0.0];

    

    

    

    //탑 제약 조건 -bigTitle 바닥 에 맞췄음

    NSLayoutConstraint *smallTitleTopConstraint = [NSLayoutConstraint

                                                                                                                      constraintWithItem:self.smallTitle

                                                                                                                      attribute:NSLayoutAttributeTop

                                                                                                                      relatedBy:NSLayoutRelationEqual

                                                                                                                      toItem:self.bigTitle

                                                                                                                      attribute:NSLayoutAttributeBottom

                                                                                                                      multiplier:1.0

                                                                                                                      constant:30.0];


    

    //슈퍼뷰에 중간 알람 라벨 추가

    [self.view addConstraints:@[smallTitleXConstraint, smallTitleTopConstraint]];

    

    

                                                                                /*텍스트 필드*/

    

    // 택스트 필드 생성 및 초기화

    

    self.textfield = [[UITextField alloc]init];

    self.textfield.secureTextEntry = YES;

    self.textfield.borderStyle = UITextBorderStyleRoundedRect;

    self.textfield.translatesAutoresizingMaskIntoConstraints = NO;

    [self.view addSubview:self.textfield];


    // 제약 조건 설정 x

    NSLayoutConstraint *textfieldXConstraint = [NSLayoutConstraint

                                                                                                                 constraintWithItem:self.textfield

                                                                                                                 attribute:NSLayoutAttributeCenterX

                                                                                                                 relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                 toItem:self.view

                                                                                                                 attribute:NSLayoutAttributeCenterX

                                                                                                                 multiplier:1.0

                                                                                                                 constant:0.0];


    //탑 제약 조건 -smallTitle 바닥 에 맞췄음

    NSLayoutConstraint *textfieldTopConstraint = [NSLayoutConstraint

                                                                                                                   constraintWithItem:self.textfield

                                                                                                                   attribute:NSLayoutAttributeTop

                                                                                                                   relatedBy:NSLayoutRelationEqual

                                                                                                                   toItem:self.smallTitle

                                                                                                                   attribute:NSLayoutAttributeBottom

                                                                                                                   multiplier:1.0

                                                                                                                   constant:30.0];

    

    

    /* 가로 제약조건 */

    NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:self.textfield

                                                                                                           attribute:NSLayoutAttributeWidth

                                                                                                           relatedBy:NSLayoutRelationEqual

                                                                                                            toItem:nil

                                                                                                            attribute:NSLayoutAttributeNotAnAttribute

                                                                                                            multiplier:1.0

                                                                                                            constant:200];

    /* 높이 제약조건 */

    NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:self.textfield

                                                                                                            attribute:NSLayoutAttributeHeight

                                                                                                            relatedBy:NSLayoutRelationEqual

                                                                                                            toItem:nil

                                                                                                            attribute:NSLayoutAttributeNotAnAttribute

                                                                                                            multiplier:1.0

                                                                                                            constant:30];

    

    

    

    

    //슈퍼뷰에 텍스트 필드 추가

    [self.view addConstraints:@[textfieldXConstraint, widthConstraint, heightConstraint,textfieldTopConstraint]];

    

    

                                                                                    /*1번 부터 - 9번 버튼*/

#pragma 전체 뷰


    //전체 뷰

    UIView *totalView = [[UIView alloc]init];

    totalView.translatesAutoresizingMaskIntoConstraints = NO;

    totalView.backgroundColor = UIColor.brownColor;

    [self.view addSubview:totalView];

    

    

    

    //3.타이틀 y 포지션

    NSLayoutConstraint *totalViewTopConstraint = [NSLayoutConstraint

                                                                                                                    constraintWithItem:totalView

                                                                                                                    attribute:NSLayoutAttributeTop

                                                                                                                    relatedBy:NSLayoutRelationEqual

                                                                                                                    toItem:self.view

                                                                                                                    attribute:NSLayoutAttributeCenterY

                                                                                                                    multiplier:1.0

                                                                                                                    constant:0.0];

    


    

    //제약 조건 설정 

    NSLayoutConstraint *totalViewLeftConstraint = [NSLayoutConstraint

                                                                                                                   constraintWithItem:totalView

                                                                                                                   attribute:NSLayoutAttributeLeading

                                                                                                                   relatedBy:NSLayoutRelationEqual

                                                                                                                   toItem:self.view

                                                                                                                   attribute:NSLayoutAttributeLeading

                                                                                                                   multiplier:1.0

                                                                                                                   constant:0.0];

    

    

    //제약 조건 설정 

    NSLayoutConstraint *totalViewRightConstraint = [NSLayoutConstraint

                                                                                                                       constraintWithItem:totalView

                                                                                                                       attribute:NSLayoutAttributeTrailing

                                                                                                                       relatedBy:NSLayoutRelationEqual

                                                                                                                       toItem:self.view

                                                                                                                       attribute:NSLayoutAttributeTrailing

                                                                                                                       multiplier:1.0

                                                                                                                       constant:0.0];

    //3.타이틀 y 포지션

    NSLayoutConstraint *totalViewBottomConstraint = [NSLayoutConstraint

                                                                                                                      constraintWithItem:totalView

                                                                                                                      attribute:NSLayoutAttributeBottom

                                                                                                                      relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                      toItem:self.view

                                                                                                                      attribute:NSLayoutAttributeBottom

                                                                                                                      multiplier:1.0

                                                                                                                      constant:0.0];

    

    /* 가로 제약조건 */

    NSLayoutConstraint *totalViewWidthConstraint = [NSLayoutConstraint

                                                                                                                            constraintWithItem:totalView

                                                                                                                            attribute:NSLayoutAttributeWidth

                                                                                                                            relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                            toItem:nil

                                                                                                                            attribute:NSLayoutAttributeNotAnAttribute

                                                                                                                            multiplier:1.0

                                                                                                                            constant:self.view.frame.size.width];

    /* 높이 제약조건 */

    NSLayoutConstraint *totalViewHeightConstraint = [NSLayoutConstraint

                                                                                                                            constraintWithItem:totalView

                                                                                                                            attribute:NSLayoutAttributeHeight

                                                                                                                            relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                            toItem:nil

                                                                                                                            attribute:NSLayoutAttributeNotAnAttribute

                                                                                                                            multiplier:1.0

                                                                                                                            constant:self.view.frame.size.height / 2];


    

    //4.슈퍼뷰에 좌버튼 추가

    [self.view addConstraints:@[totalViewWidthConstraint, totalViewHeightConstraint,totalViewTopConstraint,totalViewLeftConstraint, totalViewRightConstraint,totalViewBottomConstraint]];

    

    

#pragma first view - !

    

    //전체 뷰

    UIView *firsthView = [[UIView alloc]init];

    firsthView.translatesAutoresizingMaskIntoConstraints = NO;

    firsthView.backgroundColor = UIColor.blueColor;

    [totalView addSubview:firsthView];

    

    //3. y 포지션

    NSLayoutConstraint *firsthViewTopConstraint = [NSLayoutConstraint

                                                                                                                      constraintWithItem:firsthView

                                                                                                                      attribute:NSLayoutAttributeTop

                                                                                                                      relatedBy:NSLayoutRelationEqual

                                                                                                                      toItem:totalView

                                                                                                                      attribute:NSLayoutAttributeTop

                                                                                                                      multiplier:1.0

                                                                                                                      constant:0.0];

    

    //제약 조건 설정  왼쪽

    NSLayoutConstraint *firsthViewLeftConstraint = [NSLayoutConstraint

                                                                                                                       constraintWithItem:firsthView

                                                                                                                       attribute:NSLayoutAttributeLeading

                                                                                                                       relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                       toItem:totalView

                                                                                                                       attribute:NSLayoutAttributeLeading

                                                                                                                       multiplier:1.0

                                                                                                                       constant:0.0];

    


    /* 높이 제약조건 */

    NSLayoutConstraint *firsthViewHeightConstraint = [NSLayoutConstraint

                                                                                                                         constraintWithItem:firsthView

                                                                                                                         attribute:NSLayoutAttributeHeight

                                                                                                                         relatedBy:NSLayoutRelationEqual

                                                                                                                         toItem:totalView

                                                                                                                         attribute:NSLayoutAttributeHeight

                                                                                                                         multiplier:0.25

                                                                                                                         constant:totalView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *firsthViewWidthConstraint = [NSLayoutConstraint

                                                                                                                      constraintWithItem:firsthView

                                                                                                                      attribute:NSLayoutAttributeWidth

                                                                                                                      relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                      toItem:totalView

                                                                                                                      attribute:NSLayoutAttributeWidth

                                                                                                                      multiplier:1.0

                                                                                                                      constant:totalView.frame.size.width];

    

    //토탈 뷰에  추가

    [totalView addConstraints:@[firsthViewTopConstraint, firsthViewLeftConstraint,firsthViewWidthConstraint,firsthViewHeightConstraint]];

    



#pragma 버튼 1 - 3

    

    

    

    /*버튼 생성*/

    self.one = [UIButton buttonWithType:UIButtonTypeSystem];

    [self.one.titleLabel setFont: [self.one.titleLabel.font fontWithSize: 24]];

    self.one.translatesAutoresizingMaskIntoConstraints = NO;

    [self.one setBackgroundColor:UIColor.yellowColor];

    [self.one setTitle:@"1" forState:UIControlStateNormal];

   

    [self.one addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [firsthView addSubview:self.one];


    //3. y 포지션

    NSLayoutConstraint *oneTopConstraint = [NSLayoutConstraint

                                                                                                           constraintWithItem:self.one

                                                                                                           attribute:NSLayoutAttributeTop

                                                                                                           relatedBy:NSLayoutRelationEqual

                                                                                                           toItem:firsthView

                                                                                                           attribute:NSLayoutAttributeTop

                                                                                                           multiplier:1.0

                                                                                                           constant:0.0];




    //제약 조건 설정  왼쪽

    NSLayoutConstraint *oneLeftConstraint = [NSLayoutConstraint

                                                                                                            constraintWithItem:self.one

                                                                                                            attribute:NSLayoutAttributeLeading

                                                                                                            relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                            toItem:firsthView

                                                                                                            attribute:NSLayoutAttributeLeading

                                                                                                            multiplier:1.0

                                                                                                            constant:0.0];



    /* 높이 제약조건 */

    NSLayoutConstraint *oneHeightConstraint = [NSLayoutConstraint

                                                                                                          constraintWithItem:self.one

                                                                                                          attribute:NSLayoutAttributeHeight

                                                                                                          relatedBy:NSLayoutRelationEqual

                                                                                                          toItem:firsthView

                                                                                                          attribute:NSLayoutAttributeHeight

                                                                                                          multiplier:1.0

                                                                                                          constant:firsthView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *oneViewWidthConstraint = [NSLayoutConstraint

                                                                                                         constraintWithItem:self.one

                                                                                                         attribute:NSLayoutAttributeWidth

                                                                                                         relatedBy:NSLayoutRelationEqual

                                                                                                         toItem:firsthView

                                                                                                         attribute:NSLayoutAttributeWidth

                                                                                                         multiplier:0.3333

                                                                                                         constant:firsthView.frame.size.width];


    //첫번째 뷰에  추가

    [firsthView addConstraints:@[oneTopConstraint, oneLeftConstraint,oneHeightConstraint,oneViewWidthConstraint]];

    

    

    

    

    

    //2번

    

    /*버튼 생성*/

    self.two = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [self.two.titleLabel setFont: [self.two.titleLabel.font fontWithSize: 24]];

    self.two.translatesAutoresizingMaskIntoConstraints = NO;

    [self.two setBackgroundColor:UIColor.greenColor];

    [self.two setTitle:@"2" forState:UIControlStateNormal];

    [self.two addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [firsthView addSubview:self.two];

    

    //3. y 포지션

    NSLayoutConstraint *twoTopConstraint = [NSLayoutConstraint

                                                                                                            constraintWithItem:self.two

                                                                                                            attribute:NSLayoutAttributeTop

                                                                                                            relatedBy:NSLayoutRelationEqual

                                                                                                            toItem:firsthView

                                                                                                            attribute:NSLayoutAttributeTop

                                                                                                            multiplier:1.0

                                                                                                            constant:0.0];

    

    

    

    //제약 조건 설정  왼쪽

    NSLayoutConstraint *twoLeftConstraint = [NSLayoutConstraint

                                                                                                             constraintWithItem:self.two

                                                                                                             attribute:NSLayoutAttributeLeading

                                                                                                             relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                             toItem:self.one

                                                                                                             attribute:NSLayoutAttributeTrailing

                                                                                                             multiplier:1.0

                                                                                                             constant:0.0];

    

    

    /* 높이 제약조건 */

    NSLayoutConstraint *twoHeightConstraint = [NSLayoutConstraint

                                                                                                               constraintWithItem:self.two

                                                                                                               attribute:NSLayoutAttributeHeight

                                                                                                               relatedBy:NSLayoutRelationEqual

                                                                                                               toItem:firsthView

                                                                                                               attribute:NSLayoutAttributeHeight

                                                                                                               multiplier:1.0

                                                                                                               constant:firsthView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *twoViewWidthConstraint = [NSLayoutConstraint

                                                                                                              constraintWithItem:self.two

                                                                                                              attribute:NSLayoutAttributeWidth

                                                                                                              relatedBy:NSLayoutRelationEqual

                                                                                                              toItem:firsthView

                                                                                                              attribute:NSLayoutAttributeWidth

                                                                                                              multiplier:0.3333

                                                                                                              constant:firsthView.frame.size.width];

    

    //첫번째 뷰에  추가

    [firsthView addConstraints:@[twoTopConstraint, twoLeftConstraint,twoHeightConstraint,twoViewWidthConstraint]];

    

    

    

    //3번 버튼

    

    /*버튼 생성*/

    self.three = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    self.three.translatesAutoresizingMaskIntoConstraints = NO;

    [self.three.titleLabel setFont: [self.three.titleLabel.font fontWithSize: 24]];

    [self.three setBackgroundColor:UIColor.orangeColor];

    [self.three setTitle:@"3" forState:UIControlStateNormal];

    [self.three addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [firsthView addSubview:self.three];

    

    //3. y 포지션

    NSLayoutConstraint *threeTopConstraint = [NSLayoutConstraint

                                                                                                                constraintWithItem:self.three

                                                                                                                attribute:NSLayoutAttributeTop

                                                                                                                relatedBy:NSLayoutRelationEqual

                                                                                                                toItem:firsthView

                                                                                                                attribute:NSLayoutAttributeTop

                                                                                                                multiplier:1.0

                                                                                                                constant:0.0];

    

    


    //제약 조건 설정  왼쪽

    NSLayoutConstraint *threeLeftConstraint = [NSLayoutConstraint

                                                                                                                 constraintWithItem:self.three

                                                                                                                 attribute:NSLayoutAttributeLeading

                                                                                                                 relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                 toItem:self.two

                                                                                                                 attribute:NSLayoutAttributeTrailing

                                                                                                                 multiplier:1.0

                                                                                                                 constant:0.0];

    

    

    /* 높이 제약조건 */

    NSLayoutConstraint *threeHeightConstraint = [NSLayoutConstraint

                                                                                                               constraintWithItem:self.three

                                                                                                               attribute:NSLayoutAttributeHeight

                                                                                                               relatedBy:NSLayoutRelationEqual

                                                                                                               toItem:firsthView

                                                                                                               attribute:NSLayoutAttributeHeight

                                                                                                               multiplier:1.0

                                                                                                               constant:firsthView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *threeViewWidthConstraint = [NSLayoutConstraint

                                                                                                              constraintWithItem:self.three

                                                                                                              attribute:NSLayoutAttributeWidth

                                                                                                              relatedBy:NSLayoutRelationEqual

                                                                                                              toItem:firsthView

                                                                                                              attribute:NSLayoutAttributeWidth

                                                                                                              multiplier:0.3333

                                                                                                              constant:firsthView.frame.size.width];

    

    //첫번째 뷰에  추가

    [firsthView addConstraints:@[threeTopConstraint, threeLeftConstraint,threeHeightConstraint,threeViewWidthConstraint]];

 

    

    

    

#pragma second view - !

    

    //전체 뷰

    UIView *secondView = [[UIView alloc]init];

    secondView.translatesAutoresizingMaskIntoConstraints = NO;

    secondView.backgroundColor = UIColor.blueColor;

    [totalView addSubview:secondView];

    

    //탑 포지션

    NSLayoutConstraint *secondViewTopConstraint = [NSLayoutConstraint

                                                                                                                           constraintWithItem:secondView

                                                                                                                           attribute:NSLayoutAttributeTop

                                                                                                                           relatedBy:NSLayoutRelationEqual

                                                                                                                           toItem:firsthView

                                                                                                                           attribute:NSLayoutAttributeBottom

                                                                                                                           multiplier:1.0

                                                                                                                           constant:0.0];

    

    //제약 조건 설정  왼쪽

    NSLayoutConstraint *secondViewLeftConstraint = [NSLayoutConstraint

                                                                                                                            constraintWithItem:secondView

                                                                                                                            attribute:NSLayoutAttributeLeading

                                                                                                                            relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                            toItem:totalView

                                                                                                                            attribute:NSLayoutAttributeLeading

                                                                                                                            multiplier:1.0

                                                                                                                            constant:0.0];

    

    

    /* 높이 제약조건 */

    NSLayoutConstraint *secondViewHeightConstraint = [NSLayoutConstraint

                                                                                                                          constraintWithItem:secondView

                                                                                                                          attribute:NSLayoutAttributeHeight

                                                                                                                          relatedBy:NSLayoutRelationEqual

                                                                                                                          toItem:totalView

                                                                                                                          attribute:NSLayoutAttributeHeight

                                                                                                                          multiplier:0.25

                                                                                                                          constant:totalView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *secondViewWidthConstraint = [NSLayoutConstraint

                                                                                                                         constraintWithItem:secondView

                                                                                                                         attribute:NSLayoutAttributeWidth

                                                                                                                         relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                         toItem:totalView

                                                                                                                         attribute:NSLayoutAttributeWidth

                                                                                                                         multiplier:1.0

                                                                                                                         constant:totalView.frame.size.width];

    

    //토탈 뷰에  추가

    [totalView addConstraints:@[secondViewTopConstraint, secondViewLeftConstraint,secondViewHeightConstraint,secondViewWidthConstraint]];

    

    

#pragma 버튼 4 - 6

    

    

    

    /*버튼 생성*/

    self.four = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    self.four.translatesAutoresizingMaskIntoConstraints = NO;

    [self.four.titleLabel setFont: [self.four.titleLabel.font fontWithSize: 24]];

    [self.four setBackgroundColor:UIColor.orangeColor];

    [self.four setTitle:@"4" forState:UIControlStateNormal];

     [self.four addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [secondView addSubview:self.four];

    

    //3. y 포지션

    NSLayoutConstraint *fourTopConstraint = [NSLayoutConstraint

                                                                                                            constraintWithItem:self.four

                                                                                                            attribute:NSLayoutAttributeTop

                                                                                                            relatedBy:NSLayoutRelationEqual

                                                                                                            toItem:secondView

                                                                                                            attribute:NSLayoutAttributeTop

                                                                                                            multiplier:1.0

                                                                                                            constant:0.0];

    

    

    

    //제약 조건 설정  왼쪽

    NSLayoutConstraint *fourLeftConstraint = [NSLayoutConstraint

                                                                                                         constraintWithItem:self.four

                                                                                                         attribute:NSLayoutAttributeLeading

                                                                                                         relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                         toItem:secondView

                                                                                                         attribute:NSLayoutAttributeLeading

                                                                                                         multiplier:1.0

                                                                                                         constant:0.0];

    

    

    /* 높이 제약조건 */

    NSLayoutConstraint *fourHeightConstraint = [NSLayoutConstraint

                                                                                                       constraintWithItem:self.four

                                                                                                       attribute:NSLayoutAttributeHeight

                                                                                                       relatedBy:NSLayoutRelationEqual

                                                                                                       toItem:secondView

                                                                                                       attribute:NSLayoutAttributeHeight

                                                                                                       multiplier:1.0

                                                                                                       constant:secondView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *fourViewWidthConstraint = [NSLayoutConstraint

                                                                                                      constraintWithItem:self.four

                                                                                                      attribute:NSLayoutAttributeWidth

                                                                                                      relatedBy:NSLayoutRelationEqual

                                                                                                      toItem:secondView

                                                                                                      attribute:NSLayoutAttributeWidth

                                                                                                      multiplier:0.3333

                                                                                                      constant:secondView.frame.size.width];

    

    //두번째 뷰에  추가

    [secondView addConstraints:@[fourTopConstraint, fourLeftConstraint,fourHeightConstraint,fourViewWidthConstraint]];

    

    

    

    

    

    //5번


    /*버튼 생성*/

    self.five = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    self.five.translatesAutoresizingMaskIntoConstraints = NO;

    [self.five.titleLabel setFont: [self.five.titleLabel.font fontWithSize: 24]];

    [self.five setBackgroundColor:UIColor.yellowColor];

    [self.five setTitle:@"5" forState:UIControlStateNormal];

      [self.five addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [secondView addSubview:self.five];


    //3. y 포지션

    NSLayoutConstraint *fiveTopConstraint = [NSLayoutConstraint

                                                                                                            constraintWithItem:self.five

                                                                                                            attribute:NSLayoutAttributeTop

                                                                                                            relatedBy:NSLayoutRelationEqual

                                                                                                            toItem:secondView

                                                                                                            attribute:NSLayoutAttributeTop

                                                                                                            multiplier:1.0

                                                                                                            constant:0.0];




    //제약 조건 설정  왼쪽

    NSLayoutConstraint *fiveLeftConstraint = [NSLayoutConstraint

                                                                                                             constraintWithItem:self.five

                                                                                                             attribute:NSLayoutAttributeLeading

                                                                                                             relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                             toItem:self.four

                                                                                                             attribute:NSLayoutAttributeTrailing

                                                                                                             multiplier:1.0

                                                                                                             constant:0.0];



    /* 높이 제약조건 */

    NSLayoutConstraint *fiveHeightConstraint = [NSLayoutConstraint

                                                                                                           constraintWithItem:self.five

                                                                                                           attribute:NSLayoutAttributeHeight

                                                                                                           relatedBy:NSLayoutRelationEqual

                                                                                                           toItem:secondView

                                                                                                           attribute:NSLayoutAttributeHeight

                                                                                                           multiplier:1.0

                                                                                                           constant:secondView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *fiveViewWidthConstraint = [NSLayoutConstraint

                                                                                                          constraintWithItem:self.five

                                                                                                          attribute:NSLayoutAttributeWidth

                                                                                                          relatedBy:NSLayoutRelationEqual

                                                                                                          toItem:secondView

                                                                                                          attribute:NSLayoutAttributeWidth

                                                                                                          multiplier:0.3333

                                                                                                          constant:secondView.frame.size.width];


    //두번째 뷰에  추가

    [secondView addConstraints:@[fiveTopConstraint, fiveHeightConstraint,fiveLeftConstraint,fiveViewWidthConstraint]];




    //6번


    /*버튼 생성*/

    self.six = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    self.six.translatesAutoresizingMaskIntoConstraints = NO;

    [self.six setBackgroundColor:UIColor.greenColor];

    [self.six.titleLabel setFont: [self.six.titleLabel.font fontWithSize: 24]];

    [self.six setTitle:@"6" forState:UIControlStateNormal];

       [self.six addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [secondView addSubview:self.six];


    //3. y 포지션

    NSLayoutConstraint *sixTopConstraint = [NSLayoutConstraint

                                                                                                              constraintWithItem:self.six

                                                                                                              attribute:NSLayoutAttributeTop

                                                                                                              relatedBy:NSLayoutRelationEqual

                                                                                                              toItem:secondView

                                                                                                              attribute:NSLayoutAttributeTop

                                                                                                              multiplier:1.0

                                                                                                              constant:0.0];




    //제약 조건 설정  왼쪽

    NSLayoutConstraint *sixLeftConstraint = [NSLayoutConstraint

                                                                                                                   constraintWithItem:self.six

                                                                                                                   attribute:NSLayoutAttributeLeading

                                                                                                                   relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                   toItem:self.five

                                                                                                                   attribute:NSLayoutAttributeTrailing

                                                                                                                   multiplier:1.0

                                                                                                                   constant:0.0];



    /* 높이 제약조건 */

    NSLayoutConstraint *sixHeightConstraint = [NSLayoutConstraint

                                                                                                                     constraintWithItem:self.six

                                                                                                                     attribute:NSLayoutAttributeHeight

                                                                                                                     relatedBy:NSLayoutRelationEqual

                                                                                                                     toItem:secondView

                                                                                                                     attribute:NSLayoutAttributeHeight

                                                                                                                     multiplier:1.0

                                                                                                                     constant:secondView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *sixViewWidthConstraint = [NSLayoutConstraint

                                                                                                                    constraintWithItem:self.six

                                                                                                                    attribute:NSLayoutAttributeWidth

                                                                                                                    relatedBy:NSLayoutRelationEqual

                                                                                                                    toItem:secondView

                                                                                                                    attribute:NSLayoutAttributeWidth

                                                                                                                    multiplier:0.3333

                                                                                                                    constant:secondView.frame.size.width];


    //두번째 뷰에  추가

    [secondView addConstraints:@[sixTopConstraint, sixLeftConstraint,sixHeightConstraint,sixViewWidthConstraint]];



    

    

#pragma third view - !

    

    //전체 뷰

    UIView *thirdView = [[UIView alloc]init];

    thirdView.translatesAutoresizingMaskIntoConstraints = NO;

    thirdView.backgroundColor = UIColor.blueColor;

    [totalView addSubview:thirdView];

    

    //3. y 포지션

    NSLayoutConstraint *thirdViewTopConstraint = [NSLayoutConstraint

                                                                                                                           constraintWithItem:thirdView

                                                                                                                           attribute:NSLayoutAttributeTop

                                                                                                                           relatedBy:NSLayoutRelationEqual

                                                                                                                           toItem:secondView

                                                                                                                           attribute:NSLayoutAttributeBottom

                                                                                                                           multiplier:1.0

                                                                                                                           constant:0.0];

    

    //제약 조건 설정  왼쪽

    NSLayoutConstraint *thirdViewLeftConstraint = [NSLayoutConstraint

                                                                                                                        constraintWithItem:thirdView

                                                                                                                        attribute:NSLayoutAttributeLeading

                                                                                                                        relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                        toItem:totalView

                                                                                                                        attribute:NSLayoutAttributeLeading

                                                                                                                        multiplier:1.0

                                                                                                                        constant:0.0];

    

    

    /* 높이 제약조건 */

    NSLayoutConstraint *thirdViewHeightConstraint = [NSLayoutConstraint

                                                                                                                      constraintWithItem:thirdView

                                                                                                                      attribute:NSLayoutAttributeHeight

                                                                                                                      relatedBy:NSLayoutRelationEqual

                                                                                                                      toItem:totalView

                                                                                                                      attribute:NSLayoutAttributeHeight

                                                                                                                      multiplier:0.25

                                                                                                                      constant:totalView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *thirdViewWidthConstraint = [NSLayoutConstraint

                                                                                                                     constraintWithItem:thirdView

                                                                                                                     attribute:NSLayoutAttributeWidth

                                                                                                                     relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                     toItem:totalView

                                                                                                                     attribute:NSLayoutAttributeWidth

                                                                                                                     multiplier:1.0

                                                                                                                     constant:totalView.frame.size.width];

    

    //토탈 뷰에  추가

    [totalView addConstraints:@[thirdViewTopConstraint, thirdViewLeftConstraint,thirdViewWidthConstraint,thirdViewHeightConstraint]];

    


    

    

#pragma 버튼 7 - 9

    

    

    

    /*버튼 생성*/

    self.seven = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    self.seven.translatesAutoresizingMaskIntoConstraints = NO;

    [self.seven setBackgroundColor:UIColor.greenColor];

    [self.seven.titleLabel setFont: [self.seven.titleLabel.font fontWithSize: 24]];

    [self.seven setTitle:@"7" forState:UIControlStateNormal];

    [self.seven addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [thirdView addSubview:self.seven];

    

    //3. y 포지션

    NSLayoutConstraint *sevenTopConstraint = [NSLayoutConstraint

                                                                                                             constraintWithItem:self.seven

                                                                                                             attribute:NSLayoutAttributeTop

                                                                                                             relatedBy:NSLayoutRelationEqual

                                                                                                             toItem:thirdView

                                                                                                             attribute:NSLayoutAttributeTop

                                                                                                             multiplier:1.0

                                                                                                             constant:0.0];

    

    

    

    //제약 조건 설정  왼쪽

    NSLayoutConstraint *sevenLeftConstraint = [NSLayoutConstraint

                                                                                                          constraintWithItem:self.seven

                                                                                                          attribute:NSLayoutAttributeLeading

                                                                                                          relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                          toItem:thirdView

                                                                                                          attribute:NSLayoutAttributeLeading

                                                                                                          multiplier:1.0

                                                                                                          constant:0.0];

    

    

    /* 높이 제약조건 */

    NSLayoutConstraint *sevenHeightConstraint = [NSLayoutConstraint

                                                                                                        constraintWithItem:self.seven

                                                                                                        attribute:NSLayoutAttributeHeight

                                                                                                        relatedBy:NSLayoutRelationEqual

                                                                                                        toItem:thirdView

                                                                                                        attribute:NSLayoutAttributeHeight

                                                                                                        multiplier:1.0

                                                                                                        constant:thirdView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *sevenWidthConstraint = [NSLayoutConstraint

                                                                                                       constraintWithItem:self.seven

                                                                                                       attribute:NSLayoutAttributeWidth

                                                                                                       relatedBy:NSLayoutRelationEqual

                                                                                                       toItem:thirdView

                                                                                                       attribute:NSLayoutAttributeWidth

                                                                                                       multiplier:0.3333

                                                                                                       constant:thirdView.frame.size.width];

    

    //두번째 뷰에  추가

    [thirdView addConstraints:@[sevenTopConstraint, sevenLeftConstraint,sevenHeightConstraint,sevenWidthConstraint]];

    

    

    

    


    //8번


    /*버튼 생성*/

    self.eight = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    self.eight.translatesAutoresizingMaskIntoConstraints = NO;

    [self.eight.titleLabel setFont: [self.eight.titleLabel.font fontWithSize: 24]];

    [self.eight setBackgroundColor:UIColor.orangeColor];

    [self.eight setTitle:@"8" forState:UIControlStateNormal];

    [self.eight addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [thirdView addSubview:self.eight];


    //3. y 포지션

    NSLayoutConstraint *eightTopConstraint = [NSLayoutConstraint

                                                                                                                 constraintWithItem:self.eight

                                                                                                                 attribute:NSLayoutAttributeTop

                                                                                                                 relatedBy:NSLayoutRelationEqual

                                                                                                                 toItem:thirdView

                                                                                                                 attribute:NSLayoutAttributeTop

                                                                                                                 multiplier:1.0

                                                                                                                 constant:0.0];


    //제약 조건 설정  왼쪽

    NSLayoutConstraint *eightLeftConstraint = [NSLayoutConstraint

                                                                                                              constraintWithItem:self.eight

                                                                                                              attribute:NSLayoutAttributeLeading

                                                                                                              relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                              toItem:self.seven

                                                                                                              attribute:NSLayoutAttributeTrailing

                                                                                                              multiplier:1.0

                                                                                                              constant:0.0];



    /* 높이 제약조건 */

    NSLayoutConstraint *eightHeightConstraint = [NSLayoutConstraint

                                                                                                            constraintWithItem:self.eight

                                                                                                            attribute:NSLayoutAttributeHeight

                                                                                                            relatedBy:NSLayoutRelationEqual

                                                                                                            toItem:thirdView

                                                                                                            attribute:NSLayoutAttributeHeight

                                                                                                            multiplier:1.0

                                                                                                            constant:thirdView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *eightWidthConstraint = [NSLayoutConstraint

                                                                                                           constraintWithItem:self.eight

                                                                                                           attribute:NSLayoutAttributeWidth

                                                                                                           relatedBy:NSLayoutRelationEqual

                                                                                                           toItem:thirdView

                                                                                                           attribute:NSLayoutAttributeWidth

                                                                                                           multiplier:0.3333

                                                                                                           constant:thirdView.frame.size.width];


    //두번째 뷰에  추가

    [thirdView addConstraints:@[eightTopConstraint, eightLeftConstraint,eightHeightConstraint,eightWidthConstraint]];




    //9번


    /*버튼 생성*/

    self.nine = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    self.nine.translatesAutoresizingMaskIntoConstraints = NO;

    [self.nine.titleLabel setFont: [self.nine.titleLabel.font fontWithSize: 24]];

    [self.nine setBackgroundColor:UIColor.yellowColor];

    [self.nine setTitle:@"9" forState:UIControlStateNormal];

     [self.nine addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [thirdView addSubview:self.nine];


    //3. y 포지션

    NSLayoutConstraint *nineTopConstraint = [NSLayoutConstraint

                                                                                                            constraintWithItem:self.nine

                                                                                                            attribute:NSLayoutAttributeTop

                                                                                                            relatedBy:NSLayoutRelationEqual

                                                                                                            toItem:thirdView

                                                                                                            attribute:NSLayoutAttributeTop

                                                                                                            multiplier:1.0

                                                                                                            constant:0.0];




    //제약 조건 설정  왼쪽

    NSLayoutConstraint *nineLeftConstraint = [NSLayoutConstraint

                                                                                                             constraintWithItem:self.nine

                                                                                                             attribute:NSLayoutAttributeLeading

                                                                                                             relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                             toItem:self.eight

                                                                                                             attribute:NSLayoutAttributeTrailing

                                                                                                             multiplier:1.0

                                                                                                             constant:0.0];



    /* 높이 제약조건 */

    NSLayoutConstraint *nineHeightConstraint = [NSLayoutConstraint

                                                                                                           constraintWithItem:self.nine

                                                                                                           attribute:NSLayoutAttributeHeight

                                                                                                           relatedBy:NSLayoutRelationEqual

                                                                                                           toItem:thirdView

                                                                                                           attribute:NSLayoutAttributeHeight

                                                                                                           multiplier:1.0

                                                                                                           constant:thirdView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *nineViewWidthConstraint = [NSLayoutConstraint

                                                                                                          constraintWithItem:self.nine

                                                                                                          attribute:NSLayoutAttributeWidth

                                                                                                          relatedBy:NSLayoutRelationEqual

                                                                                                          toItem:thirdView

                                                                                                          attribute:NSLayoutAttributeWidth

                                                                                                          multiplier:0.3333

                                                                                                          constant:thirdView.frame.size.width];


    //두번째 뷰에  추가

    [thirdView addConstraints:@[nineTopConstraint, nineLeftConstraint,nineHeightConstraint,nineViewWidthConstraint]];



    

    

    

#pragma four view - !

    

    //전체 뷰

    UIView *fourView = [[UIView alloc]init];

    fourView.translatesAutoresizingMaskIntoConstraints = NO;

    fourView.backgroundColor = UIColor.blueColor;

    [totalView addSubview:fourView];

    

    //3. y 포지션

    NSLayoutConstraint *foureViewTopConstraint = [NSLayoutConstraint

                                                                                                                      constraintWithItem:fourView

                                                                                                                      attribute:NSLayoutAttributeTop

                                                                                                                      relatedBy:NSLayoutRelationEqual

                                                                                                                      toItem:thirdView

                                                                                                                      attribute:NSLayoutAttributeBottom

                                                                                                                      multiplier:1.0

                                                                                                                      constant:0.0];

    

    //제약 조건 설정  왼쪽

    NSLayoutConstraint *foureViewLeftConstraint = [NSLayoutConstraint

                                                                                                                       constraintWithItem:fourView

                                                                                                                       attribute:NSLayoutAttributeLeading

                                                                                                                       relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                       toItem:totalView

                                                                                                                       attribute:NSLayoutAttributeLeading

                                                                                                                       multiplier:1.0

                                                                                                                       constant:0.0];

    

    

    /* 높이 제약조건 */

    NSLayoutConstraint *foureViewHeightConstraint = [NSLayoutConstraint

                                                                                                                     constraintWithItem:fourView

                                                                                                                     attribute:NSLayoutAttributeHeight

                                                                                                                     relatedBy:NSLayoutRelationEqual

                                                                                                                     toItem:totalView

                                                                                                                     attribute:NSLayoutAttributeHeight

                                                                                                                     multiplier:0.25

                                                                                                                     constant:totalView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *foureViewWidthConstraint = [NSLayoutConstraint

                                                                                                                    constraintWithItem:fourView

                                                                                                                    attribute:NSLayoutAttributeWidth

                                                                                                                    relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                                    toItem:totalView

                                                                                                                    attribute:NSLayoutAttributeWidth

                                                                                                                    multiplier:1.0

                                                                                                                    constant:totalView.frame.size.width];

    

    //토탈 뷰에  추가

    [totalView addConstraints:@[foureViewTopConstraint, foureViewLeftConstraint,foureViewHeightConstraint,foureViewWidthConstraint]];

    

    

#pragma 버튼 clear  0  back

    

    

    

    /*버튼 생성*/

    self.clearButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    self.clearButton.translatesAutoresizingMaskIntoConstraints = NO;

    [self.clearButton.titleLabel setFont: [self.clearButton.titleLabel.font fontWithSize: 24]];

    [self.clearButton setBackgroundColor:UIColor.yellowColor];

    [self.clearButton setTitle:@"clear" forState:UIControlStateNormal];

     [self.clearButton addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [fourView addSubview:self.clearButton];

    

    //3. y 포지션

    NSLayoutConstraint *clearTopConstraint = [NSLayoutConstraint

                                                                                                                  constraintWithItem:self.clearButton

                                                                                                                  attribute:NSLayoutAttributeTop

                                                                                                                  relatedBy:NSLayoutRelationEqual

                                                                                                                  toItem:fourView

                                                                                                                  attribute:NSLayoutAttributeTop

                                                                                                                  multiplier:1.0

                                                                                                                  constant:0.0];

    

    

    

    //제약 조건 설정  왼쪽

    NSLayoutConstraint *clearLeftConstraint = [NSLayoutConstraint

                                                                                                               constraintWithItem:self.clearButton

                                                                                                               attribute:NSLayoutAttributeLeading

                                                                                                               relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                               toItem:fourView

                                                                                                               attribute:NSLayoutAttributeLeading

                                                                                                               multiplier:1.0

                                                                                                               constant:0.0];

    

    

    /* 높이 제약조건 */

    NSLayoutConstraint *clearHeightConstraint = [NSLayoutConstraint

                                                                                                             constraintWithItem:self.clearButton

                                                                                                             attribute:NSLayoutAttributeHeight

                                                                                                             relatedBy:NSLayoutRelationEqual

                                                                                                             toItem:fourView

                                                                                                             attribute:NSLayoutAttributeHeight

                                                                                                             multiplier:1.0

                                                                                                             constant:fourView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *clearWidthConstraint = [NSLayoutConstraint

                                                                                                            constraintWithItem:self.clearButton

                                                                                                            attribute:NSLayoutAttributeWidth

                                                                                                            relatedBy:NSLayoutRelationEqual

                                                                                                            toItem:fourView

                                                                                                            attribute:NSLayoutAttributeWidth

                                                                                                            multiplier:0.3333

                                                                                                            constant:fourView.frame.size.width];

    

    //두번째 뷰에  추가

    [fourView addConstraints:@[clearTopConstraint, clearLeftConstraint,clearWidthConstraint,clearHeightConstraint]];

    

    

    

    

    

    //8번


    /*버튼 생성*/

    self.zero = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    self.zero.translatesAutoresizingMaskIntoConstraints = NO;

    [self.zero setBackgroundColor:UIColor.greenColor];

     [self.zero.titleLabel setFont: [self.zero.titleLabel.font fontWithSize: 24]];

    [self.zero setTitle:@"8" forState:UIControlStateNormal];

    [self.zero addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [fourView addSubview:self.zero];


    //3. y 포지션

    NSLayoutConstraint *zeroTopConstraint = [NSLayoutConstraint

                                                                                                              constraintWithItem:self.zero

                                                                                                              attribute:NSLayoutAttributeTop

                                                                                                              relatedBy:NSLayoutRelationEqual

                                                                                                              toItem:fourView

                                                                                                              attribute:NSLayoutAttributeTop

                                                                                                              multiplier:1.0

                                                                                                              constant:0.0];


    //제약 조건 설정  왼쪽

    NSLayoutConstraint *zeroLeftConstraint = [NSLayoutConstraint

                                                                                                               constraintWithItem:self.zero

                                                                                                               attribute:NSLayoutAttributeLeading

                                                                                                               relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                               toItem:self.clearButton

                                                                                                               attribute:NSLayoutAttributeTrailing

                                                                                                               multiplier:1.0

                                                                                                               constant:0.0];



    /* 높이 제약조건 */

    NSLayoutConstraint *zeroHeightConstraint = [NSLayoutConstraint

                                                                                                             constraintWithItem:self.zero

                                                                                                             attribute:NSLayoutAttributeHeight

                                                                                                             relatedBy:NSLayoutRelationEqual

                                                                                                             toItem:fourView

                                                                                                             attribute:NSLayoutAttributeHeight

                                                                                                             multiplier:1.0

                                                                                                             constant:fourView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *zeroWidthConstraint = [NSLayoutConstraint

                                                                                                            constraintWithItem:self.zero

                                                                                                            attribute:NSLayoutAttributeWidth

                                                                                                            relatedBy:NSLayoutRelationEqual

                                                                                                            toItem:fourView

                                                                                                            attribute:NSLayoutAttributeWidth

                                                                                                            multiplier:0.3333

                                                                                                            constant:fourView.frame.size.width];


    //두번째 뷰에  추가

    [fourView addConstraints:@[zeroTopConstraint, zeroLeftConstraint,zeroHeightConstraint,zeroWidthConstraint]];




    // back


    /*버튼 생성*/

    self.deleteButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    self.deleteButton.translatesAutoresizingMaskIntoConstraints = NO;

    [self.deleteButton setBackgroundColor:UIColor.orangeColor];

      [self.deleteButton.titleLabel setFont: [self.deleteButton.titleLabel.font fontWithSize: 24]];

    [self.deleteButton setTitle:@"back" forState:UIControlStateNormal];

     [self.deleteButton addTarget:self action:@selector(numButtonAction:) forControlEvents: UIControlEventTouchUpInside];

    [fourView addSubview:self.deleteButton];


    //3. y 포지션

    NSLayoutConstraint *deleteTopConstraint = [NSLayoutConstraint

                                                                                                             constraintWithItem:self.deleteButton

                                                                                                             attribute:NSLayoutAttributeTop

                                                                                                             relatedBy:NSLayoutRelationEqual

                                                                                                             toItem:fourView

                                                                                                             attribute:NSLayoutAttributeTop

                                                                                                             multiplier:1.0

                                                                                                             constant:0.0];




    //제약 조건 설정  왼쪽

    NSLayoutConstraint *deleteLeftConstraint = [NSLayoutConstraint

                                                                                                              constraintWithItem:self.deleteButton

                                                                                                              attribute:NSLayoutAttributeLeading

                                                                                                              relatedBy:NSLayoutRelationGreaterThanOrEqual

                                                                                                              toItem:self.zero

                                                                                                              attribute:NSLayoutAttributeTrailing

                                                                                                              multiplier:1.0

                                                                                                              constant:0.0];



    /* 높이 제약조건 */

    NSLayoutConstraint *deleteHeightConstraint = [NSLayoutConstraint

                                                                                                            constraintWithItem:self.deleteButton

                                                                                                            attribute:NSLayoutAttributeHeight

                                                                                                            relatedBy:NSLayoutRelationEqual

                                                                                                            toItem:fourView

                                                                                                            attribute:NSLayoutAttributeHeight

                                                                                                            multiplier:1.0

                                                                                                            constant:fourView.frame.size.height];

    /* 가로 제약조건 */

    NSLayoutConstraint *deleteWidthConstraint = [NSLayoutConstraint

                                                                                                           constraintWithItem:self.deleteButton

                                                                                                           attribute:NSLayoutAttributeWidth

                                                                                                           relatedBy:NSLayoutRelationEqual

                                                                                                           toItem:fourView

                                                                                                           attribute:NSLayoutAttributeWidth

                                                                                                           multiplier:0.3333

                                                                                                           constant:fourView.frame.size.width];


    //두번째 뷰에  추가

    [fourView addConstraints:@[deleteTopConstraint, deleteLeftConstraint,deleteHeightConstraint,deleteWidthConstraint]];


}




-(void)numButtonAction:(UIButton*)sender{

    

    

    if([sender.titleLabel.text isEqualToString:@"clear"]){                                          //전체 지우기

        NSLog(@"clear");

        self.textfield.text = @"";

        _secretKey = [[NSString alloc]init];

        return;

        

    }else if([sender.titleLabel.text isEqualToString:@"back"]){                                      //하나씩 지우기

         NSLog(@"back");

        

        if ([_secretKey length] > 0) {

            _secretKey = [_secretKey substringToIndex:[_secretKey length] - 1];

             self.textfield.text = _secretKey;

        } else {

            return;

        }

        

        return;

    }else{                                                                                                                          //숫자하나씩더하기

        

        _secretKey = [_secretKey stringByAppendingString:sender.titleLabel.text];

        self.textfield.text = _secretKey;

    }

    


  

}



- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}




@end



file

AutoLayoutSample.zip



참고

https://soooprmx.com/archives/7232

https://zeddios.tistory.com/380

http://www.tutorialspoint.com/ios/ios_auto_layouts.htm



암호화 복호화







#import <UIKit/UIKit.h>


#import "RNDecryptor.h"

#import "RNEncryptor.h"



@interface ViewController : UIViewController

{

    NSString *secretKey;                                                                         //salt

}

- (NSString *)getCryptorEncrypt:(NSString *)toEncryptString;            //암호화


- (NSString *)getRNCryptorDecript:(NSString *)toDecriptDataString;          //복호화


@end





#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    secretKey = @"thisissalt";                                  //salt : 임의의 문자설정

    

    //암호화할 문자열

    NSString * password = @"2019년1월2일";

    

    //암호화 함수 호출

    NSString * encryptedString= [self getCryptorEncrypt:password];

    NSLog(@"암호화된 문자열 : %@" , encryptedString);

    //AwEuV776EAa6APKdLuLGSwuGnTKZ6HvcurFJw26nLHjxxrCzs1TCNLK55h9g53BSyFY/nC6PB9IQEwJn9yIcqcPy2HJoDT9K/YPBs240l0hASA==

    

    

   //복호화 함수 호출

   NSString* decriptedString = [self getRNCryptorDecript:encryptedString];

    NSLog(@"복호화된 문자열 : %@" , decriptedString); //2019년1월2일

}



//암호화 함수

- (NSString *)getCryptorEncrypt:(NSString *)toEncryptString{

    

    NSData *data = [toEncryptString dataUsingEncoding:NSUTF8StringEncoding];

    NSError *error;

    

    NSData *encryptedData = [RNEncryptor encryptData:data

                                        withSettings:kRNCryptorAES256Settings

                                            password:secretKey

                                               error:&error];

    if(error != nil){

        NSLog(@"암호화 중에 오류가 발생했습니다 : %@" , error.localizedDescription);

    }

    return encryptedData.base64Encoding;

}


//복호화 함수

- (NSString *)getRNCryptorDecript:(NSString *)toDecriptDataString

{

    

  NSData *data =  [[NSData alloc]initWithBase64EncodedString:toDecriptDataString options:NSDataBase64DecodingIgnoreUnknownCharacters];

    

    NSError *error;

    NSData *decryptedData = [RNDecryptor decryptData:data

                                        withPassword:secretKey

                                               error:&error];

    if(error != nil){

        NSLog(@"복호화 중에 오류가 발생했습니다 : %@" , error.localizedDescription);

    }

    NSString * result = [[NSString alloc]initWithData:decryptedData encoding:NSUTF8StringEncoding];

    return result;

}



- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}



@end



파일1


RunCyptor.zip


파일2 (전역함수)

RunCyptor2.zip












Obejctive c 클래스 변수 & 배열을 json 변환 


#선언


CaptureMediaActivity.h


//임시 경로 저장된 최종 배열 리턴

+ (NSMutableArray * ) tempMediaFilePathArray;


//배열에 스트링 경로 저장하기

+ (void) setTempMediaFilePathToArray:(NSString *)urlString;




CaptureMediaActivity.m


//공용 배열 변수 ,내부사용할 정적변수 생성

static NSMutableArray * _tempFileUrlArray;




- (void)viewDidLoad {

    [super viewDidLoad];


//배열 초기화

_tempFileUrlArray = [[NSMutableArray alloc]init];


}


//전체 배열 변수 넘겨주기

+ (NSMutableArray * )tempMediaFilePathArray

{

return _tempFileUrlArray;

}


//배열이 초기화 안됐으면 초기화 해주고, 배열에 스트링 값 삽입

+ (void) setTempMediaFilePathToArray:(NSString *)urlString;

{

if(_tempFileUrlArray == nil){

_tempFileUrlArray = [[NSMutableArray alloc]init];

}


[_tempFileUrlArray addObject:urlString];

}




#사용


사용 예.1

//url 스트링 삽입

[CaptureMediaActivity setTempMediaFilePathToArray:@"path 변수"];    //세터로 값 설정



사용 예.2

//전체 url 스트링 값이 들어 있는 배열을 리턴 받아서 json 스트링으로 변환

NSError *error;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:CaptureMediaActivity.tempMediaFilePathArray

options:NSJSONWritingPrettyPrinted

error:&error];  //겟터로 값이용


NSString *mediaFileJsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];


NSLog(@"mediaFileJsonString : %@" , mediaFileJsonString) ;



uiview 커스터마이징 & 오디오 비디오 사진 뷰어


.h


#import <MCore/MCore.h>

#import <MediaPlayer/MediaPlayer.h>

#import <AVKit/AVKit.h>

@interface MediaViewActivity : UIViewController <AVAudioPlayerDelegate>


@end


.m


#import "MediaViewActivity.h"


@interface MediaViewActivity ()

@property (strong, nonatomic) MPMoviePlayerController *moviePlayer;

@property (strong, nonatomic)  AVAudioPlayer *audioPlayer;

@property (nonatomic, assign) BOOL isPlaying;

@property(strong,nonatomic)  NSTimer *TimeOfActiveUser;

@property (nonatomic, assign) NSInteger second;                                                     //타임 인터발

@property(strong,nonatomic) UILabel *time;

@property (strong, nonatomic)  UISlider *currentTimeSlider;

- (void)currentTimeSliderValueChanged:(id)sender;

- (void)currentTimeSliderTouchUpInside:(id)sender;

@end


@implementation MediaViewActivity


- (void)viewDidLoad {

    [super viewDidLoad];

   

    //document 경로

    NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(

                                                                       NSDocumentDirectory,

                                                                       NSUserDomainMask,

                                                                       YES) objectAtIndex:0];

    

   

    //album.js에서 오디오,사진,영상 중에 클릭했을때 파일이 저장된 로컬 url을 넘겨준다.

    NSString* reletivePath =  [_parameters objectForKey:@"url" encoding:NSUTF8StringEncoding];

   

    NSString* mediaUrlString = [documentDirectory stringByAppendingFormat:@"%@" , reletivePath];

    

    //확장자명을 통해서 분기. 미디어 타입별로 다른 Viewer 열기.

    NSRange strRange;

    

    strRange = [mediaUrlString rangeOfString:@"photo"];

    if (strRange.location != NSNotFound) {

        

        NSLog(@"사진 파일");

        NSLog(@"mediaUrlString : %@" , mediaUrlString);

        UIImage *image = [UIImage imageWithContentsOfFile:mediaUrlString];

        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

        imageView.frame = CGRectMake(0, 60, self.view.frame.size.width, self.view.frame.size.height - 140);

        [self.view addSubview:imageView];

        

        //닫기 버튼 custom

        UIButton *closeButton = [[UIButton alloc]init];

        closeButton.frame=CGRectMake(320, 15, 40, 40);

        NSString *thePath = [[NSBundle mainBundle] pathForResource:@"camera_ic10" ofType:@"png"];

        UIImage *closeImg = [UIImage imageWithContentsOfFile:thePath];

        [closeButton setImage:closeImg forState:UIControlStateNormal];

        [closeButton addTarget:self action:@selector(closeAction:) forControlEvents:UIControlEventTouchUpInside];

        [self.view addSubview:closeButton];

        

    }

    

    strRange = [mediaUrlString rangeOfString:@"video"];

    if (strRange.location != NSNotFound) {


        //닫기 버튼 custom

        UIButton *closeButton = [[UIButton alloc]init];

        closeButton.frame=CGRectMake(320, 15, 40, 40);

        [closeButton setTitle:@"video" forState:UIControlStateNormal];

        [closeButton setTitleColor:UIColor.clearColor forState:UIControlStateNormal];

        NSString *thePath = [[NSBundle mainBundle] pathForResource:@"camera_ic10" ofType:@"png"];

        UIImage *closeImg = [UIImage imageWithContentsOfFile:thePath];

        [closeButton setImage:closeImg forState:UIControlStateNormal];

        [closeButton addTarget:self action:@selector(closeAction:) forControlEvents:UIControlEventTouchUpInside];

        

         //비디오 플레이어

        _moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:mediaUrlString]];


        self.moviePlayer.view.frame = CGRectMake (0, 0, self.view.frame.size.width, self.view.frame.size.height-20);

        self.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;

       

        [self.view addSubview:self.moviePlayer.view];

        [self.moviePlayer.view addSubview:closeButton];

        

        [self.moviePlayer play];


    }

    

    strRange = [mediaUrlString rangeOfString:@"audio"];

    if (strRange.location != NSNotFound) {

        

        //백그라운드 그림 바꾸기

        NSString *backgroundImagePath = [[NSBundle mainBundle] pathForResource:@"camera_ic02" ofType:@"png"];

        UIImage *backgroundImg = [UIImage imageWithContentsOfFile:backgroundImagePath];

        

        

        UIImageView *backImageView = [[UIImageView alloc]initWithFrame:CGRectMake(self.view.frame.size.width / 2 - 50, self.view.frame.size.height / 2 -73, 100, 100)];

        [backImageView setImage:backgroundImg];

        

        

        //닫기 버튼 custom

        UIButton *closeButton = [[UIButton alloc]init];

        closeButton.frame=CGRectMake(320, 15, 40, 40);

        [closeButton setTitle:@"audio" forState:UIControlStateNormal];

        [closeButton setTitleColor:UIColor.clearColor forState:UIControlStateNormal];

        NSString *thePath = [[NSBundle mainBundle] pathForResource:@"camera_ic10" ofType:@"png"];

        UIImage *closeImg = [UIImage imageWithContentsOfFile:thePath];

        [closeButton setImage:closeImg forState:UIControlStateNormal];

        [closeButton addTarget:self action:@selector(closeAction:) forControlEvents:UIControlEventTouchUpInside];

        

        


        

        //오디오 플레이어

        _moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:mediaUrlString]];

        

        self.moviePlayer.view.frame = CGRectMake (0, self.view.frame.size.height - 65

                                                  , self.view.frame.size.width, 55);

        self.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;

        

        [self.view addSubview:backImageView];

        [self.view addSubview:self.moviePlayer.view];

        [self.view addSubview:closeButton];

        

        [self.moviePlayer play];

//        //닫기 버튼 custom

//        UIButton *closeButton = [[UIButton alloc]init];

//        closeButton.frame=CGRectMake(320, 15, 40, 40);

//        NSString *thePath = [[NSBundle mainBundle] pathForResource:@"camera_ic10" ofType:@"png"];

//        UIImage *closeImg = [UIImage imageWithContentsOfFile:thePath];

//        [closeButton setImage:closeImg forState:UIControlStateNormal];

//        [closeButton addTarget:self action:@selector(closeAction:) forControlEvents:UIControlEventTouchUpInside];

//

//

//        UILabel *title = [[UILabel alloc]initWithFrame:CGRectMake(137, 56, 343, 17)];

//        [title setText:@"제목"];

//

//

//        _time = [[UILabel alloc]initWithFrame:CGRectMake(137, 119, 101, 36)];

//        _time.text = @"00:00";

//

//        //시작 멈춤 버튼

//        UIButton *startBtn = [[UIButton alloc]initWithFrame:CGRectMake(16, 220, 119, 102)];

//        [startBtn setTitle:@"시작/멈춤" forState:UIControlStateNormal];

//        [startBtn addTarget:self action:@selector(startAudioAction:) forControlEvents:UIControlEventTouchUpInside];

//

//        //정지버튼

//         UIButton *stopBtn = [[UIButton alloc]initWithFrame:CGRectMake(258, 220, 101, 102)];

//         [stopBtn setTitle:@"정지" forState:UIControlStateNormal];

//        [stopBtn addTarget:self action:@selector(stopAudioAction:) forControlEvents:UIControlEventTouchUpInside];

//

//

//        //오디오 플레이어 준비

//

//        _audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:

//                        [NSURL fileURLWithPath:mediaUrlString] error:NULL];

//        _audioPlayer.delegate = self;

//        [_audioPlayer prepareToPlay];

//        [self setIsPlaying:NO];

//

//

//        //슬라이더

//        _currentTimeSlider = [[UISlider alloc]initWithFrame:CGRectMake(26, 500, 160, 60)];

//        _currentTimeSlider.minimumValue = 0.0f;

//        _currentTimeSlider.maximumValue = self.audioPlayer.duration;

//        _currentTimeSlider.continuous = YES;

//        [_currentTimeSlider addTarget:self action:@selector(currentTimeSliderValueChanged:) forControlEvents:UIControlEventValueChanged];

//        [_currentTimeSlider addTarget:self action:@selector(currentTimeSliderTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];

//

//

//        //view에 넣어주기

//        [self.view setBackgroundColor:UIColor.greenColor];

//          [self.view addSubview:_currentTimeSlider];

//        [self.view addSubview:closeButton];

//        [self.view addSubview:title];

//         [self.view addSubview:_time];

//         [self.view addSubview:startBtn];

//         [self.view addSubview:stopBtn];

//

//

//        //오디오 플레이어 시작

//        [self startAudioAction:startBtn];

    }

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


////오디오 정지

//- (void)stopAudioAction:(UIButton *)button {

//

//    [_audioPlayer stop];

//    [self setIsPlaying:NO];

//

//    //타이머 정지

//    [_TimeOfActiveUser invalidate];

//    _TimeOfActiveUser = nil;

//

//    //타이머 라벨 및 변수 초기화

//    _time.text = [NSString stringWithFormat:@"%0.2d:%0.2d", 0, 0];

//    _second = 0;

//   _audioPlayer.currentTime = 0;

//    [_audioPlayer prepareToPlay];

//}

//

//

////오디오 시작

//- (void)startAudioAction:(UIButton *)button {

//

//    //재생중

//    if (_isPlaying) {

//        [_audioPlayer pause];

//        [self setIsPlaying:NO];

//

//        //타이머 정지

//        [_TimeOfActiveUser invalidate];

//        _TimeOfActiveUser = nil;

//

//    }else{

//

//        [_audioPlayer play];

//        [self setIsPlaying:YES];

//

//        //타이머 시작

//        _TimeOfActiveUser =  [NSTimer scheduledTimerWithTimeInterval:1.0 repeats:YES block:^(NSTimer * _Nonnull timer) {

//

//            [self updateDisplay];

//

//        }];

//

//    }

//

//}

//

//#pragma mark - AVAudioPlayerDelegate

//

//- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{

//

//    NSLog(@"audioPlayerDidFinishPlaying");

//

//    //타이머 정지

//    [_TimeOfActiveUser invalidate];

//    _TimeOfActiveUser = nil;

//      [self setIsPlaying:NO];

//

//    //타이머 라벨 및 변수 초기화

//    [self updateDisplay];

//

//}

//

//- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error{

//    NSLog(@"audioPlayerDecodeErrorDidOccur");

//    //타이머 정지

//    [_TimeOfActiveUser invalidate];

//    _TimeOfActiveUser = nil;

//      [self setIsPlaying:NO];

//    //타이머 라벨 및 변수 초기화

//     [self updateDisplay];

//}

//


//

//- (void)currentTimeSliderValueChanged:(id)sender{

//

//}

//- (void)currentTimeSliderTouchUpInside:(id)sender{

//

//    [self.audioPlayer stop];

//    self.audioPlayer.currentTime = self.currentTimeSlider.value;

//    [self.audioPlayer prepareToPlay];

//    [self setIsPlaying:NO];

//    [self startAudioAction:nil];

//}

//

//

//- (void)updateDisplay

//{

//

//    NSTimeInterval currentTime = self.audioPlayer.currentTime;

//

//    long seconds = (int)currentTime % 60;

//    long minutes = ((int)currentTime / 60) % 60;

//

//    _time.text = [NSString stringWithFormat:@"%0.2ld:%0.2ld", minutes, seconds];

//

//    self.currentTimeSlider.value = currentTime;

//}

//닫기 버튼

- (void)closeAction:(UIButton *)button {

    

    //버튼에 따라서 분기해주기

    //오디오 재생중에 종료했을때 ..stop 처리 해주기

    

    if ([button.titleLabel.text isEqualToString:@"audio"]) {

        

         [self.moviePlayer stop];

    }else if([button.titleLabel.text isEqualToString:@"video"]){

         [self.moviePlayer stop];

    }


    [self historyBack:nil];

}

@end



오디오 참고 파일

iPhoneStreamingPlayer.zip

IDZAudioPlayerTutorial1.zip

AudioStreamer-master (2).zip





+ Recent posts

티스토리 툴바