2013-08-03 2 views
0

시간을 별도의 시간 (시, 분, 초)으로 보여주는 몇 가지 코드가 있습니다.막대가 시간이 지남에 따라 증가하도록 애니메이션하기

- (void)viewDidLoad 
{ 
    [self updateTime]; 

    [super viewDidLoad]; 

    hourFormatter = [[NSDateFormatter alloc] init]; 
    hourFormatter.dateFormat = @"HH"; 
    minuteFormatter = [[NSDateFormatter alloc] init]; 
    minuteFormatter.dateFormat = @"mm"; 
    secondFormatter = [[NSDateFormatter alloc] init]; 
    secondFormatter.dateFormat = @"ss"; 
} 

- (void)updateTime { 

    [updateTimer invalidate]; 
    updateTimer = nil; 

    currentTime = [NSDate date]; 
    NSDateFormatter *timeFormatter = [[NSDateFormatter alloc] init]; 
    [timeFormatter setTimeStyle:NSDateFormatterMediumStyle]; 

    hourLabel.text = [hourFormatter stringFromDate: currentTime]; 
    minuteLabel.text = [minuteFormatter stringFromDate: currentTime]; 
    secondLabel.text = [secondFormatter stringFromDate: currentTime]; 

    updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(updateTime) userInfo:nil repeats:YES]; 
} 

시간이 증가함에 따라 상승하는 세 개의 막대 (시간, 분, 초)가 필요합니다. 정확하게이 cydia lockscreen 조정을 좋아합니다 : http://patrickmuff.ch/repo/

EDIT : 나는 Objective-C에 매우 익숙하며 매우 미숙해서 어떤 팁이나 도움도 크게 부탁드립니다.

+0

일부 기본 로직과 형상을 적용하십시오. –

+0

타이머가 fire 메서드를 실행할 때마다 (특히 이전 타이머를 무효화하지 않는 경우) 새 타이머를 생성하면 안됩니다. – Wain

+0

내가 이것을 어떻게 만들 수 있는지에 대한 단서가 있습니까? – user2397282

답변

1

현재 단위 수 (시간, 분, 초)에 대한 텍스트를 받고 있습니다.이 숫자의 float 또는 int 버전을 가져와 '상자'프레임을 설정해야합니다 UIView 인스턴스).

표시되는 스크린 샷은보기 프레임을 모두 같은 크기와 반투명 배경색으로 설정하여 실제로 수행됩니다. 그런 다음 각 뷰에는 단위 값을 사용하여 프레임 높이를 설정하는 하위 뷰가 있습니다. 그리고 하위 뷰는 완전히 불투명 한 배경색을가집니다.

물론 이것은 뷰를 사용하는 대신 코어 그래픽을 사용하여 수행 할 수 있습니다.


여러분의 의견대로, 배경이 좋습니다. XIB에서 3 개의보기를 만들고 배경 영역 위에 배치합니다. 콘센트를 연결하여 코드에서 사용할 수 있도록하십시오. 배경색과 높이를 0으로 설정하십시오.

: 코드에서

은 때마다 새 단위 값은 뷰 프레임을 수정, 같은 (상각 내 머리 위로)을 (높이를 증가시키고 'Y'위치를 줄이기 위해) 도착
NSInteger hours = ...; 

CGRect frame = self.hoursView.frame; 

if ((NSInteger)frame.size.height != hours) { // check if we need to modify 
    frame.origin.y -= (hours - frame.size.height); 
    frame.size.height = hours; 

    self.hoursView.frame = frame; 
} 
+0

나는 이미 반투명 상자가있는 내 응용 프로그램의 배경을 만들었으므로 필요한 것은 시간이 증가함에 따라 흰색 상자를 맨 위에 놓는 것입니다. 나는이 모든 것에 정말 새로운 것이므로 어떻게이 모든 것을 할 수 있을까요? 나는 너무 많은 귀찮음이 아니길 바래! – user2397282

+0

정말 고마워요! 이것은 너와 같은 명확하고 도움이되는 대답을 얻기에 너무 길다. 정확히 내가 원했던 것 !! – user2397282

관련 문제