2013-07-09 1 views
0

문제는 막대 세그먼트를 숨기지 않는 것입니다. 주어진 시간에 하나의 세그먼트 만 있기 때문에 제거하고 싶습니다.하나의 세그먼트 만있는 경우 UISegmentedControl 숨기기

UISegmentedControl을 삭제하거나 숨긴 경우 첫 번째 셀과 탐색 모음 사이에 공백을 유지하십시오. 내가보기에, 나는 프레임을 변경해야하는 모르는

enter image description here

... 가시성의

$3 = 0x0abbdae0 <UIWindow: 0x9f936b0; frame = (0 0; 320 480); layer = <UIWindowLayer: 0x9f9b420>> 
    | <UILayoutContainerView: 0xab84630; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0xab96490>> 
    | | <UITransitionView: 0xab4fe90; frame = (0 0; 320 480); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0xab94600>> 
    | | | <UIViewControllerWrapperView: 0x9fe23f0; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x9fe3170>> 
    | | | | <UILayoutContainerView: 0x9fe2c90; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x9fb6b00>> 
    | | | | | <UINavigationTransitionView: 0x9fb6870; frame = (0 0; 320 480); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x9fe39b0>> 
    | | | | | | <UIViewControllerWrapperView: 0x9f0d530; frame = (0 64; 320 416); autoresize = W+H; layer = <CALayer: 0x9f336d0>> 
    | | | | | | | <UITableView: 0xb301800; frame = (0 0; 320 416); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0xabbdc80>; layer = <CALayer: 0xabc06e0>; contentOffset: {0, -0}> 
    | | | | | | | | <UITableViewBackgroundView: 0xabc0e70; frame = (0 0; 320 416); autoresize = W+H; layer = <CALayer: 0xabc0ed0>> 
    | | | | | | | | | <UIImageView: 0xabc0f00; frame = (0 0; 320 416); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xabc0f60>> 
    | | | | | | | | | <UIView: 0xabc0fb0; frame = (0 0; 320 416); autoresize = W+H; layer = <CALayer: 0xabc1010>> 
    | | | | | | | | <UITableViewCell: 0x9f3d010; frame = (0 55; 320 46); text = '1'; autoresize = W; layer = <CALayer: 0x9ff9560>> 

내 설정 :

[self.SegmentControl removeAllSegments]; 

    if([_invitados count] > 0){ 
     [self.SegmentControl insertSegmentWithTitle:@"SegmentA" atIndex:0 animated:YES]; 
    } 

    [self.SegmentControl insertSegmentWithTitle:@"SegmentB" atIndex:([self.SegmentControl numberOfSegments]==0 ? 0:1) animated:YES]; 

    if([_followers count] > 0){ 
     [self.SegmentControl insertSegmentWithTitle:@"SegmentC" atIndex:[self.SegmentControl numberOfSegments] animated:YES]; 
    } 

    [self.SegmentControl setEnabled:YES forSegmentAtIndex:0]; 

    if([self.SegmentControl numberOfSegments]<=1){ 
     [self.SegmentControl removeFromSuperview]; 
    } 

답변

1

는 사용자 정의의 UIView를 사용하는 경우 두 가지 기능, 즉 [self setNeedsLayout][self layoutSubviews]을 사용하는 것이 좋습니다. layoutSubviews 메서드에서 서브 프레임의 프레임과 크기를 설정하거나, 활성화 또는 비활성화하거나, 숨김 등을 설정해야합니다. UI에서 일부 변경을 수행 한 후 setNeedsLayout을 호출하십시오.

Apple docs : 제약 조건 또는 자동 크기 조정 동작보다 하위보기의 레이아웃을보다 정확하게 제어해야하는 경우 layoutSubviews을 구현하십시오.

관련 문제