Category Archives: objective-c

[iOS] 동적으로 label 생성하여 센터에 위치 시키기

ViewContoller.h

// 라벨을 우선 선언한다.
@property (strong, nonatomic) IBOutlet UILabel *label;

 

ViewController.m

// 라벨을 가운데로 위치시키기 위한 포인트 설정
CGPoint superCenter = CGPointMake(CGRectGetMidX([self.view bounds]), CGRectGetMidY([self.view bounds]));
// 위치와 너비 설정
_label = [[UILabel alloc] initWithFrame:CGRectMake(40, 30, 300, 50)];
// 백그라운드 컬러
_label.backgroundColor = [UIColor clearColor];
// 글자 정렬
_label.textAlignment = NSTextAlignmentCenter;
// 글자 색
_label.textColor = [UIColor blackColor];
// 몇개의 줄을 표시 할 것인지. 0 으로 설정하면 다 표시함.
_label.numberOfLines = 0;
// 센터는 종전에 설정한 포인트로
_label.center = superCenter;
_label.text = @"이렇게 하면 동적으로\n 센터에 위치 시킬 수 있습니다 ㅇㅇ";
// 뷰에 포함시킨다.    
[self.view addSubview:_label];

[iOS] AlertController 예제 [Ok, Cancel]

UIAlertview가 iOS8.0부터  deprecated되면서 코딩을 할 때마다 보기 싫은 노란 줄이 생긴다.

이제는 UIAlerController를 아래와 같이 사용해야 한다.

 

    UIAlertController * alert=   [UIAlertController
                                  alertControllerWithTitle:@"Info"
                                  message:@"You are using UIAlertController"
                                  preferredStyle:UIAlertControllerStyleAlert];
    
    UIAlertAction* ok = [UIAlertAction
                         actionWithTitle:@"OK"
                         style:UIAlertActionStyleDefault
                         handler:^(UIAlertAction * action)
                         {
                             [alert dismissViewControllerAnimated:YES completion:nil];
                             
                         }];
    UIAlertAction* cancel = [UIAlertAction
                             actionWithTitle:@"Cancel"
                             style:UIAlertActionStyleDefault
                             handler:^(UIAlertAction * action)
                             {
                                 [alert dismissViewControllerAnimated:YES completion:nil];
                                 
                             }];
    
    [alert addAction:ok];
    [alert addAction:cancel];
    
    [self presentViewController:alert animated:YES completion:nil];

[iOS] Swipe Gesture 인식하기

Swipe는 스마트폰에서 쓸어내리는 이벤트를 의미한다.

사파리나 네이버 앱에서 뒤로 가기 위해 왼쪽에서 오른쪽으로 쓸어내리는 동작을 하는데, 이를 swipe라고 한다.

viewDidLoad

 

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // 오른쪽으로
    UISwipeGestureRecognizer *rightRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipeHandle:)];
    rightRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
    [rightRecognizer setNumberOfTouchesRequired:1];
    [_swipe addGestureRecognizer:rightRecognizer];
    // 왼쪽으로
    UISwipeGestureRecognizer *leftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftSwipeHandle:)];
    leftRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
    [leftRecognizer setNumberOfTouchesRequired:1];
    [_swipe addGestureRecognizer:leftRecognizer];
}

ViewContoller.m

- (void)rightSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer
{
    //Do moving
    NSLog(@"right swipe!!");
}

- (void)leftSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer
{
    // do moving
    NSLog(@"left swipe!!");
}

[iOS] 간단한 Polyline 그리기

@property (nonatomic) MKPolyline *currentRoute;




// 포인트 배열 선언
CLLocationCoordinate2D coords[[points getSize]];
// 애플 맵 기준으로 포인트를 다시 재정의 
for (int i = 0; i < [points getSize]; i++) {
    CLLocationCoordinate2D coord = CLLocationCoordinate2DMake([points getLatitudeWithInt:i], [points getLongitudeWithInt:i]);
            coords[i] = coord;
}
        
// 선을 그린다.
_currentRoute = [MKPolyline polylineWithCoordinates:coords count:[points getSize]];

// 그린 선을 맵 위에 얹는다.
dispatch_async(dispatch_get_main_queue(), ^{
            [self.mapView addOverlay:_currentRoute];
            self.textView.text = routeInfo;
});

[iOS] http 프로토콜로 파일 다운로드

    //파일 다운 받을 디렉토리 설정
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *myDownloadPath = [documentsDirectory stringByAppendingPathComponent:@"/myFolder"];
    NSError *error;
    
    // 폴더 생성
    if (![[NSFileManager defaultManager] createDirectoryAtPath:myDownloadPath
                                   withIntermediateDirectories:YES
                                                    attributes:nil
                                                         error:&error])
    {
        NSLog(@"Create directory error: %@", error);
    }
    
    // 다운로드를 여기서 한다.
    NSString *downloadURL = @"http://I.want.to.download/";
    NSArray *downloadList = @[@"1.jpg",
                              @"2.jpg",
                              @"3.jpg",
                              @"4.jpg",
                              @"5.jpg",
                              @"6.jpg",
                              @"7.jpg",
                              @"8.jpg"
                              ];
    
    // for문 돌면서 여러개를 받을 겁니다.
    for (NSString *stringUrl in downloadList)
    {
        NSURL  *url = [NSURL URLWithString:[downloadURL stringByAppendingString:stringUrl]];
        NSString  *filePath = [NSString stringWithFormat:@"%@/%@", myDownloadPathr, stringUrl];
        BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
        // 파일이 없으면 다운로드 시작
        if (!fileExists) {
            NSData *urlData = [NSData dataWithContentsOfURL:url];
            // urlData가 있으면 다운로드 시작
            if ( urlData )
            {
                NSLog(filePath);
                [urlData writeToFile:filePath atomically:YES];
            }
        }
    }