2011-09-10 5 views
0

3 개의 가로 줄무늬와 동일한 창에 3 개의 UIScrollViewController를 표시하려고합니다. 3 번 화면이 너무 크게 스크롤됩니다. 이를 달성하기위한 코드는 아래에 나와 있지만 어떤 이유로 작동하지 않으며 상단 스트라이프 만 보여줍니다.같은 창에 여러 개의 UIScrollViewControllers보기가 표시되지 않습니다.

다른 흰색 배경보기 덕분에 화면의 다른 2 개 영역도 볼 수있는 스크롤 가능하지만 배경색이 표시되지 않습니다. 왜 그럴까요? 여기

코드입니다 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Creating the window programmatically 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    CGRect bounds = [self window].bounds; 

    float x = bounds.origin.x; 
    float y = bounds.origin.y; 
    float w = bounds.size.width; 
    float h = bounds.size.height; 

    CGRect upperFrame = CGRectMake(x,y,w,h/3); 
    CGRect middleFrame = CGRectMake(x,y + h/3,w,h/3); 
    CGRect lowerFrame = CGRectMake(x, y + 2 * h/3, w, h/3); 

    // Creating the scroll view which will contain the 3 views 
    UIScrollView *upperScrollView = [[UIScrollView alloc] initWithFrame:upperFrame]; 
    UIScrollView *middleScrollView = [[UIScrollView alloc] initWithFrame:middleFrame]; 
    UIScrollView *lowerScrollView = [[UIScrollView alloc] initWithFrame:lowerFrame]; 

    // ContentSize should be wide enough for 3 pages 
    [upperScrollView setContentSize:CGSizeMake(3 * w, h/3)]; 
    [middleScrollView setContentSize:CGSizeMake(3 * w, h/3)]; 
    [lowerScrollView setContentSize:CGSizeMake(3 * w, h/3)]; 

    // Enforce the display of only one page at a time 
    [upperScrollView setPagingEnabled:YES]; 
    [middleScrollView setPagingEnabled:YES]; 
    [lowerScrollView setPagingEnabled:YES]; 

    // UPPER SCROLLVIEW 

    // This will be the first view (red) 
    UIView *redViewU = [[UIView alloc] initWithFrame:upperFrame]; 
    [redViewU setBackgroundColor:[UIColor redColor]]; 

    // The second view will start horizontally when the first view ends 
    upperFrame.origin.x += w; 

    // This will be the second view (green) 
    UIView *greenViewU = [[UIView alloc] initWithFrame:upperFrame]; 
    [greenViewU setBackgroundColor:[UIColor greenColor]]; 

    // The third view will start horizontally when the second view ends 
    upperFrame.origin.x += w; 

    // This will be the third view (blue) 
    UIView *blueViewU = [[UIView alloc] initWithFrame:upperFrame]; 
    [blueViewU setBackgroundColor:[UIColor blueColor]]; 

    // Adding the 3 views to the scroll view 
    [upperScrollView addSubview:redViewU]; 
    [upperScrollView addSubview:greenViewU]; 
    [upperScrollView addSubview:blueViewU]; 

    // Now creating the view controller, father of the scrollview 
    UIViewController *upperViewController = [[UIViewController alloc] init]; 
    [upperViewController setView:upperScrollView]; 

    // MIDDLE SCROLLVIEW 

    // This will be the first view (red) 
    UIView *redViewM = [[UIView alloc] initWithFrame:middleFrame]; 
    [redViewM setBackgroundColor:[UIColor redColor]]; 

    // The second view will start horizontally when the first view ends 
    middleFrame.origin.x += w; 

    // This will be the second view (green) 
    UIView *greenViewM = [[UIView alloc] initWithFrame:middleFrame]; 
    [greenViewM setBackgroundColor:[UIColor greenColor]]; 

    // The third view will start horizontally when the second view ends 
    middleFrame.origin.x += w; 

    // This will be the third view (blue) 
    UIView *blueViewM = [[UIView alloc] initWithFrame:middleFrame]; 
    [blueViewM setBackgroundColor:[UIColor blueColor]]; 

    // Adding the 3 views to the scroll view 
    [middleScrollView addSubview:redViewM]; 
    [middleScrollView addSubview:greenViewM]; 
    [middleScrollView addSubview:blueViewM]; 

    // Now creating the view controller, father of the scrollview 
    UIViewController *middleViewController = [[UIViewController alloc] init]; 
    [middleViewController setView:middleScrollView]; 

    // LOWER SCROLLVIEW 

    // This will be the first view (red) 
    UIView *redViewL = [[UIView alloc] initWithFrame:lowerFrame]; 
    [redViewL setBackgroundColor:[UIColor redColor]]; 

    // The second view will start horizontally when the first view ends 
    lowerFrame.origin.x += w; 

    // This will be the second view (green) 
    UIView *greenViewL = [[UIView alloc] initWithFrame:lowerFrame]; 
    [greenViewL setBackgroundColor:[UIColor greenColor]]; 

    // The third view will start horizontally when the second view ends 
    lowerFrame.origin.x += w; 

    // This will be the third view (blue) 
    UIView *blueViewL = [[UIView alloc] initWithFrame:lowerFrame]; 
    [blueViewL setBackgroundColor:[UIColor blueColor]]; 

    // Adding the 3 views to the scroll view 
    [lowerScrollView addSubview:redViewL]; 
    [lowerScrollView addSubview:greenViewL]; 
    [lowerScrollView addSubview:blueViewL]; 

    // Now creating the view controller, father of the scrollview 
    UIViewController *lowerViewController = [[UIViewController alloc] init]; 
    [lowerViewController setView:lowerScrollView]; 

    // A white background view to see at least the scroll indicators 
    UIView *whiteView = [[UIView alloc] initWithFrame:bounds]; 
    [whiteView setBackgroundColor:[UIColor whiteColor]]; 

    // Finally the window will hold the view controllers' views 
    [[self window] addSubview:whiteView]; 
    [[self window] addSubview:upperViewController.view]; 
    [[self window] addSubview:middleViewController.view]; 
    [[self window] addSubview:lowerViewController.view]; 

    // Displaying the window 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

답변

0

해결 : 내가 어떤 이유로있는 UIScrollView 내부의 전망 상대 X 원하는 것을 깨달았다 IB와 같은 일을하고 성공 후, y는 자신의 프레임, 절대하지 좌표. 다음 (매있는 UIScrollView에 대해 동일)을 위의 코드에서 뷰의 프레임을 변경

:

CGRect redViewFrame = CGRectMake(x,y,w,h/3); 
CGRect greenViewFrame = CGRectMake(w,y,w,h/3); 
CGRect blueViewFrame = CGRectMake(2 * w,y,w,h/3); 

문제를 해결하고, 지금은 3 개 스크롤 배경을 볼 수 있습니다. 희망은 다른 누군가에게 도움이됩니다. :) 지금은 끝났습니다.

관련 문제