UIScrollView的在iOS 6中(UIScrollView in iOS 6)

2019-07-30 03:04发布

最近我下载的Xcode 4.5(iOS 6中),但想继续我的项目,我注意到的UIScrollView不能正常工作的一个时,让我更清楚地解释:

我创建了的UIScrollView并添加使用下面的代码初始化它:

-(void)viewDidLoad{

    [mainScrollView setScrollEnabled:YES];
    mainScrollView.contentSize = CGSizeMake(480, 0);

    [super viewDidLoad];

}

我打开我的XIB和链接后mainScrollView到一个UIScrollView,我加入了一些UIButton的公司到scrollView.When后,我建立了项目mainScrollView被滚动但按键并没有露面,我的意思是,我只是能看见按钮已经在屏幕上。 我在做什么错了?我怎么能设置的的UIScrollView?

Answer 1:

对于xcode 4.5 ,如果使用的是scrollView ,你必须要么取消选中“ use AutoLayout文件检查器”。

或者,如果你想“使用AutoLayout ”,然后在.M(实现)文件添加此

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    theScroller.contentSize=CGSizeMake(1024.0,1300.0);
}


Answer 2:

也许你刚刚输入的这个毛病,但你的CGSize具有的高度为0?



Answer 3:

您可以使用自动布局做它的XCode 4.5,但你的配置在viewDidAppear您的UIScrollView

我这样做也符合图像静态的UITableView。

命名相似图片timg1.png,timg2.png ....

在ControllerView.h文件

@property (weak, nonatomic) IBOutlet UIScrollView *Sv1;
@property (weak, nonatomic) IBOutlet UIPageControl *Pc1;

在您的ControllerView.m文件

-(void)viewDidAppear:(BOOL)animated
{

    //Scrollview
    Sv1.delegate = self;

    Sv1.contentSize = CGSizeMake(260, 176);

    [self.Sv1 setBackgroundColor:[UIColor clearColor]];
    // ScrollViewGarten.frame = CGRectMake(9, 11, 283, 170);
    [Sv1 setCanCancelContentTouches:NO];

    Sv1.multipleTouchEnabled = NO;
    Sv1.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    Sv1.clipsToBounds = YES;
    Sv1.scrollEnabled = YES;
    Sv1.pagingEnabled = YES;

    NSUInteger nimagesTextil = 0;
    CGFloat cxTextil = 0;
    for (; ; nimagesTextil++) {
        NSString *imageNameTextil = [NSString stringWithFormat:@"timg%d.png", (nimagesTextil + 1)];
        UIImage *imageTextil = [UIImage imageNamed:imageNameTextil];
        if (imageTextil == nil) {
            break;
        }
        UIImageView *imageViewTextil = [[UIImageView alloc] initWithImage:imageTextil];

        CGRect rect = imageViewTextil.frame;
        rect.size.height = 176;
        rect.size.width = 260;
        rect.origin.x = ((Sv1.frame.size.width - imageTextil.size.width) / 2) + cxTextil;
        rect.origin.y = ((Sv1.frame.size.height - imageTextil.size.height) / 2);

        imageViewTextil.frame = rect;

        [Sv1 addSubview:imageViewTextil];

        cxTextil += Sv1.frame.size.width;
    }
    self.Pc1.numberOfPages = nimagesTextil;
    [Sv1 setContentSize:CGSizeMake(cxTextil, [Sv1 bounds].size.height)];
    self.Pc1.currentPage = 0;

}


Answer 4:

我相信这是任何的Xcode 4.5或iOS的6 SDK的错误。 我固定它的方式是通过添加子视图我的UIScrollView编程。

所以,你必须做的是这样的:

- (void)viewDidLoad {

    [super viewDidLoad];

    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(400.0f, 10.0f, 60.0f, 30.0f);
    [mainScrollView addSubView:button];
    mainScrollView.contentSize = CGSizeMake(480.0f, mainScrollView.frame.size.height);
}

试试这个,让我知道,如果这个为你工作。

如果你有一个旧版本的Xcode可能是复制代码和笔尖在那边看到的结果是一个好主意。



Answer 5:

如果你想解决这个问题,并使用自动版式,请将您的contentSize代码的viewDidAppear方法。 我发现在这个SO问题的答案: 嵌入的ImageView滚动型与自动布局在iOS 6



Answer 6:

我会做这样的:

-(void)viewDidLayoutSubviews
{
[self.scrollview setScrollEnabled:YES];
[self.scrollview setUserInteractionEnabled:YES];
[self.scrollview setContentSize:CGSizeMake(320, _y)];
[self.scrollview setAlwaysBounceVertical:YES];
}

我用的是类变量_y,因为我所有的子视图高度添加到它。



文章来源: UIScrollView in iOS 6