0

forループ内の配列要素の数に応じてスクロールビューにサブビューを追加しています。コンテナービューには追加のサブビューがあります。問題は、最初のコンテナービューにのみ追加されたサブビューが含まれ、新しいコンテナービューには3番目のサブビューが含まれないことです。サブビューのフレームを確認しましたが、まだ機能していないようです。

CGFloat contentOffset = 0.0f;
//add tej views one by one to scrollview

for (NSString *packageType in packageTypesArray) 
{

    CGRect lvPackageContainerFrame = CGRectMake(contentOffset, 0.0f,scrollView.frame.size.width,scrollView.frame.size.height);

    LVPackageContainer *lvPackageContainer = [[LVPackageContainer alloc] initWithFrame:lvPackageContainerFrame];

    NSLog(@"Frame %@",NSStringFromCGRect(lvPackageContainerFrame));
    lvPackageContainer.packageType = packageType;
    [packageContainersArray addObject:lvPackageContainer];

     UIImageView *backgroundImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 264, 314)];
     NSLog(@"BackgroundImage %@",backgroundImage);
     backgroundImage.backgroundColor = [UIColor redColor];
     [backgroundImage setImage:[UIImage imageNamed:@"shadowBackground.png"]];
     backgroundImage.center = lvPackageContainer.center;
     [lvPackageContainer addSubview:backgroundImage];


    [scrollView addSubview:lvPackageContainer];

    contentOffset += lvPackageContainerFrame.size.width;
    scrollView.contentSize = CGSizeMake(contentOffset, scrollView.frame.size.height);

}   
4

1 に答える 1

1
backgroundImage.center = CCGPointMake(lvPackageContainerFrame.size.width/2, lvPackageContainerFrame.size.height/2);

サブビューを追加すると、座標系はその親ビューから開始されます

あなたの場合、2 番目のビューの中心を設定すると、{480,240} のようになります (ビューが iphone で全画面表示であると仮定します)。したがって、表示できる 3 番目のサブビューは、実際にはページ 2 のサブビューです。

更新: ビューの中心を取得すると、実際にはフレームの値から計算されます。

center.x = (frame.origin.x + frame.size.width) / 2;
center.y = (frame.origin.y + frame.size.height) / 2;

したがって、2番目のビューが であると仮定するとCGRectMake(320, 0, 320, 480)、その中心は

center.x = (320 + 320) / 2;
center.y = (0 + 480) / 2;

したがって、サブビューは{480,240}2 番目のビューの中心になります。

スクロールビューに対して相対的に変換すると、サブビューは になり{(320+480),(0+240)}、2番目のビューではなく3番目のビューにあることがわかります

于 2012-07-26T10:58:49.977 に答える