0

[scrollview removeFromSuperview]を配置すると、scrollviewデリゲート(scrollviewはviewcontrollerのサブビュー)に設定されたviewcontrollerがあります。ビューコントローラとスクロールビューの両方が削除され、空のウィンドウが表示されます。

スクロールビューのみを削除するにはどうすればよいですか?

編集::::

これは私のviewcontroller.hの一部です

@interface QuartzViewController : UIViewController <UIScrollViewDelegate> {

これは私のviewcontroller.mの一部です

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
UIInterfaceOrientation o = self.interfaceOrientation;
if ((o == UIInterfaceOrientationPortrait) || (o == UIInterfaceOrientationPortraitUpsideDown))   {D = 1;pagingScrollView.delegate = nil;[pagingScrollView removeFromSuperview];[self resurrectPaging];}
if ((o == UIInterfaceOrientationLandscapeLeft) || (o == UIInterfaceOrientationLandscapeRight))  {D = 2;pagingScrollView.delegate = nil;[pagingScrollView removeFromSuperview];[self resurrectPaging];}}

-(void)resurrectPaging { 
CGRect F;
F = [self frameForPagingScrollView];
pagingScrollView = [[UIScrollView alloc] initWithFrame:F];
[SELF addSubview:pagingScrollView];
[self setPaging];}

- (void)viewDidLoad {
[self.view addSubview:SELF];
D = 1;
CGRect F;
F = [self frameForPagingScrollView];
pagingScrollView = [[UIScrollView alloc] initWithFrame:F];
[self setPaging];}



- (void)setPaging {
if (D == 1) {
    CGRect F;
    F = [self frameForPagingScrollView];
    pagingScrollView.pagingEnabled = YES;
    pagingScrollView.backgroundColor = [UIColor whiteColor];
    pagingScrollView.showsVerticalScrollIndicator = NO;
    pagingScrollView.showsHorizontalScrollIndicator = NO;
    pagingScrollView.contentSize = CGSizeMake(F.size.width * [self pdfPageCount], F.size.height);
    pagingScrollView.delegate = self;
    pagingScrollView.clipsToBounds = YES;
    pagingScrollView.bounces = YES;
    self.view = pagingScrollView;
    recycledPages = [[NSMutableSet alloc] init];
    visiblePages  = [[NSMutableSet alloc] init];
    [self tilePages];
    [pagingScrollView addSubview:self.isvP];}
else if (D == 2) {
    CGRect F;
    F = [self frameForPagingScrollView];
    pagingScrollView.pagingEnabled = YES;
    pagingScrollView.backgroundColor = [UIColor redColor];
    pagingScrollView.showsVerticalScrollIndicator = NO;
    pagingScrollView.showsHorizontalScrollIndicator = NO;
    pagingScrollView.contentSize = CGSizeMake(F.size.width * [self pdfPageCount], F.size.height);
    pagingScrollView.delegate = self;
    pagingScrollView.clipsToBounds = YES;
    pagingScrollView.bounces = YES;
    self.view = pagingScrollView;
    recycledPages = [[NSMutableSet alloc] init];
    visiblePages  = [[NSMutableSet alloc] init];
    [self tilePages];
    [pagingScrollView addSubview:self.isvL];}}

基本的に、スクロールビューを削除してから再度追加する理由は、デバイスの向きが横向きに変わると、横向きのサブビューが間違った場所(x、y)にあるためです。

しかし、ランドスケープで開始する場合、isvLは適切な場所にあるので、コードが正しいことがわかります。pagingScrollViewのisvLのx、y位置を横向きにねじ込みます!

4

1 に答える 1

0

基本的に、スクロールビューを削除してから再度追加する理由は、デバイスの向きが横向きに変わると、横向きのサブビューが間違った場所(x、y)にあるためです。

スクロールビューの配置に問題がある場合は、自動サイズ変更マスクを正しく設定するか、フレームを手動で調整してみてください。毎回スクロールビューを削除して再作成する理由はありません。

また、リストしたコードでは、スクロールビューがリークしているように見えます。

于 2010-08-24T00:00:49.190 に答える