2012-07-08 3 views
4

다른보기와 교차하는 일반적인 둥근 사각형 단추가있는보기가 있습니다. 사용자가 둥근 사각형을 누르면 불러 오기가 시작됩니다. 나는 페치가 처리되는 동안 반올림 된 rect 버튼 안에 회전하는 휠을 텍스트 ("다음")로 바꾸고 싶습니다. 둥근 사각형 단추의 텍스트를 회 전자와 바꾸려면 어떻게해야합니까?

나는 스피너 생성 :

UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
[spinner startAnimating]; 

을하지만 나는 그것이 둥근 RECT 버튼의 텍스트를 대체 할 수 있도록하는 방법을 모르겠어요.

의견이 있으십니까? 고맙습니다.

+1

한 단어 : 오버레이. –

+0

여기에 오버레이를 사용하는 방법에 대한 제안이 있으십니까? 덕분에 – blrsk

+0

어디서나 사용할 수 있습니다 - 텍스트를 지운 다음 이전에 보이지 않았던 오버레이를 볼 수있게하십시오. –

답변

7

평상시대로 단추를 만들거나 참조를 얻은 다음 단추 클릭을 처리하는 동안 회 전자를 만들고 단추의 하위보기로 설정합니다. 버튼을 여러 번 클릭하지 못하게하는 것이 좋습니다. 다음과 같은 라인을 따라

뭔가 트릭을 수행해야합니다

... 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    button.frame = CGRectMake(10, 10, 70, 40); 
    [button setTitle:@"Next" forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:button]; 
    ... 

- (void)click:(UIButton *)button { 
    [button setTitle:@"" forState:UIControlStateNormal]; 
    UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    [spinner startAnimating]; 
    spinner.frame = button.bounds; 
    [button addSubview:spinner]; 
    button.enabled = NO; 

    // do your actual work... 
} 
+0

도움이됩니다. 감사. – blrsk

1

내가 연관된 객체

을 활용 범주를 썼다

있는 UIButton + ActivityIndicator.h

// Created by reynaldo on 1/16/14. 

#import <Foundation/Foundation.h> 

@interface UIButton (ActivityIndicator) 
- (void)startActivityIndicator; 
- (void)stopActivityIndicator; 
@end 

있는 UIButton + ActivityIndicator.m

// Created by reynaldo on 1/16/14. 

#import <objc/runtime.h> 
#import "UIButton+ActivityIndicator.h" 

static char TITLE_KEY; 
static char ACTIVITY_INDICATOR_KEY; 

@implementation UIButton (ActivityIndicator) 

- (void)startActivityIndicator { 
    objc_setAssociatedObject(self, &TITLE_KEY, self.currentTitle, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 

    [self setTitle:@"" forState:UIControlStateNormal]; 
    UIActivityIndicatorView *activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
    [self addSubview:activityIndicatorView]; 
    activityIndicatorView.frame = CGRectMake(self.frame.size.width/2, self.frame.size.height/2. - 2, 7, 7); 
    [activityIndicatorView startAnimating]; 

    objc_setAssociatedObject(self, &ACTIVITY_INDICATOR_KEY, activityIndicatorView, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 

} 

- (void)stopActivityIndicator { 
    NSString *title = objc_getAssociatedObject(self, &TITLE_KEY); 
    UIActivityIndicatorView *activityIndicatorView = objc_getAssociatedObject(self, &ACTIVITY_INDICATOR_KEY); 

    if(activityIndicatorView) { 
     [activityIndicatorView removeFromSuperview]; 
    } 

    if(title.length) { 
     [self setTitle:title forState:UIControlStateNormal]; 
    } 
} 

@end 
관련 문제