woong's

IOS Xcode Pull To Refresh 사용하기 본문

Develop/IOS

IOS Xcode Pull To Refresh 사용하기

dlsdnd345 2016. 2. 18. 12:00

IOS Xcode Pull To Refresh 사용하기


Xcode TableView 를 사용하면서 Pull To Refresh 기능을 사용해 보았습니다.

android 에서는 기능을 구현해야 하지만 .. IOS 는 기본기능이 구현되어 있다는 

정보를 들을적이 있어 찾아보니 기본적으로 사용할수 있는 Pull To Refresh 가 

있었습니다. 이 Pull To Refresh 사용법 , 간단한 Custom 방법을 정리해 보려 합니다.





포스트는 기본 테이블뷰가 구성되어 있다는 전체하에 시작되겠습니다.

테이블뷰를 구성한 .h 파일에 UIRefreshControll을 작성합니다. 


1
2
3
 
UIRefreshControl *refreshControl;
 
cs

다음으로 .m 파일에 UIRefreshControl 을 초기화 및 구성합니다.

1
2
3
4
5
6
7
8
9
10
11
12
 
refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[_tableViewList addSubview:refreshControl];
 
 
/**
 * refresh가 완료 되면 호출되는 메서드
 */
- (void)refresh:(UIRefreshControl *)refreshControl {
    [refreshControl endRefreshing];
}
cs


위 세줄 코드를 테이블뷰 초기화 하는 위치에서 초기화 및 연결 작업을 진행합니다. 

연결작업 진행간에 selector를 통해서  refresh가 완료되면 호출되는 메서드를 작성합니다.

위와 같이 작성이 되면 refresh가 바로 완료 되어서 멈춰서 돌고있는 모습을 볼수 없습니다.

차후에  api 가 연결되면 자연스럽게 모습을 볼수 있으나 현재는 볼수 없기 때문에 timer를

이용해서 코드를 작성해 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
**
 * refresh가 완료 되면 호출되는 메서드
 */
- (void)refresh:(UIRefreshControl *)refreshControl {
    [self performSelector:@selector(playerStop) withObject:nil afterDelay :3.0f];
}
 
 
/**
 * 타이머 종료시 호출되는 메서드
 */
- (void) playerStop{
    [refreshControl endRefreshing];
}
cs



위와 같이 refresh 함수 안에 3초후에 playerStop을 호출해서 

Pull To Refresh 를 종료 하면 원하던 Pull To Refresh 를 볼수 있습니다.


여기까지는 기본 Pull To Refresh 사용법이였습니다.

하지만 디자인에 따라 색상 변경 , 글자 등 커스텀이 이루어질수 있습니다.

간단한 커스텀은 지원을 해주고있습니다. 


-Pull To Refresh 배경 색 변경

-Pull To Refresh 인티케이터 색 변경

-Pull To Refresh 글자 입력 및 색 변경


을 해보도록 하겠습니다.


1
2
 
refreshControl.backgroundColor = [UIColor blackColor];
cs


위 속성을 주면 색상이 변경되는것을 볼수 있습니다. 하지만 색상변경으로 인해서 
인디케이터가 잘안보이게 되었습니다. 인티케이터의 색을 변경해야 될것 같습니다.

1
2
 
refreshControl.tintColor = [UIColor whiteColor];
cs


위 속성을 통해서 인디케이터의 색상을 변경하였습니다.

다음으로는 문구 및 색상 변경을 해보도록 하겠습니다.


1
2
3
4
5
6
 
NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:[UIColor blackColor]
                                                            forKey:NSForegroundColorAttributeName];
    
NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull To Refresh" attributes:attrsDictionary];
refreshControl.attributedTitle = attributedTitle;
cs


위 속성을 통해서 문구 및 색상 변경을 해보았습니다. 
이렇게 기본적인 커스텀은 지원해주는것 같습니다.











Comments