2013-03-26 3 views
0

다음 다이어그램을 기반으로 배치 한 iOS 앱의 페이지가 있습니다.iOS에서 프로그래밍 방식으로 uiview 레이아웃을 변경하십시오.

  • 진한 회색 상자 = 네비게이션 바
  • 밝은 회색 상자 = UIView의
  • 검은 색 테두리 (프리젠 테이션 등의 DropShadow 멋진과) = UIView의 (다시, 좋은 그림자, 다른 배경 색상 등 포함)
  • 2 개의 텍스트 필드
  • 분홍색 상자 = 이벤트 후 표시 할 다른보기입니다.

현재 layout

, 내가 initWithFrame으로 모든 레이아웃, 명시 적으로 내가 아마 잘 알고있는 모든 항목의 프레임을 설정하고있어 (내가 IOS 개발에 새로운, 그래서 지적하십시오 나는 올바른 방향으로 나아 간다.)

내가 집중하고자하는 것은 제 2 텍스트 입력란에 분홍색 상자를 표시하고 정확하게 응답하는 수퍼 뷰와 새로운 필드 주변의 레이아웃을 입력 할 때입니다.

이벤트 자체에는 아무런 문제가 없으며 easliy 각 UIView의 프레임을 차례로 바꿀 수 있지만 잘못되었거나 일부 포인터를 좋아할 것입니다. 또한 궁극적으로 분홍색 상자에 애니메이션을 적용하고 이에 포함 된보기를 애니메이션으로 표시하는 것이 좋습니다.

나는 완전히 자신을 설명했으면한다. 많은 감사

+1

[iOS 용 프로그래밍 가이드보기] (http://developer.apple.com/library/ios/#documentation/windowsviews/conceptual/viewpg_iphoneos/CreatingViews/CreatingViews.html)를 읽으셨습니까? 새로운 접근 방식은'레이아웃 자동 변경 규칙을 사용하여 자동으로 레이아웃 변경 처리하기 '이며 유니버설은'수동으로 뷰의 레이아웃 조정하기'입니다. –

+0

UIView 하위 클래스에 layoutSubviews를 구현하고 거기에 뷰 프레임을 설정해야합니다. – Felix

+0

덕분에 @ A-Live, 그 문서가 정말 도움이되었습니다. autoresizesSubviews = YES로 정렬했습니다. – Leon

답변

0

애니메이션을 실행하려는 이벤트가 발생하면 그 작업은 매우 간단합니다.

- (void)myEventMethod:(id)sender { 
    // Do your event stuff here 
    // Animate the pink box into view 
    // The below assumes the pink box is hidden behind the blackView and you'd like to drop it down 44 pixels over 0.3 seconds - hopefully correct - haven't tested 
    // need to be careful as it'll move down 44px every time myEventMethod: is triggered 
    [UIView animateWithDuration:0.3 
         delay:0.0 
         options:UIViewAnimationOptionCurveEaseIn 
        animations:^{ 
        CGRect pinkboxEndFrame = CGRectMake(self.blackView.frame.origin.x, self.blackView.frame.origin.y + 44, self.pinkbox.frame.size.width, self.pinkbox.frame.size.height); 
        [self.pinkbox setFrame:pinkboxEndFrame]; 
        } 
        completion:nil]; 

} 

위의 내용을 다른보기에서 수행하려는 다른 애니메이션으로 업데이트하면됩니다.

애니메이션보기에 대한 자세한 내용은 Apple의 View Programming Guide을 확인하십시오.

관련 문제