为什么我的子视图的大小是我想要的两倍?

时间:2013-02-06 06:46:34

标签: iphone uiscrollview horizontalscrollview addsubview

我正在向UIView添加UIScrollView。它将是一个水平滚动视图,我想添加多个视图。显示的代码用于一个scrollview只是为了简化它。滚动视图在我的故事板中,我添加的视图是.xib文件。视图会被添加,但它的大小是我设置的两倍。所以它是640到244. scrollview占据了我视图的底部122像素。并且.xib是320 x 122.我只是在我的.xib顶部有一个大按钮,所以我可以告诉我添加它时发生了什么。唯一的问题是,我添加到scrollview的.xib是我希望它的两倍大。我做错了什么?

如果需要更多信息,请与我们联系。谢谢!

    BADAchievements *temporaryView = (BADAchievements *)[[[NSBundle mainBundle] loadNibNamed:@"BADAchievements" owner:self options:nil] objectAtIndex:0];

    CGRect f = temporaryView.frame;
    f.size.width = 320;
    temporaryView.frame = f;

    CGSize s = self.achievementScrollView.contentSize;
    s.width = f.origin.x + f.size.width;
    [self.achievementScrollView setContentSize:s];

    [self.achievementScrollView addSubview:temporaryView];

3 个答案:

答案 0 :(得分:1)

您将代码放在上面的位置,即视图控制器的哪种方法?

=>您temporaryView和/或achievementScrollView的最后一帧不一定由您在NIB中指定的尺寸定义!可以稍后重新调整帧/边界(即,当完成视图加载过程并且布置所有子视图时)。

因此,您应该检查您的子视图的autoresizingMaskautoresizesSubviews属性是否设置正确。 (即自动调整大小)

查看有关自动调整大小等的View Programming Guide for iOS

答案 1 :(得分:0)

尝试做一些像这样的改动:

BADAchievements *temporaryView = (BADAchievements *)[[[NSBundle mainBundle] loadNibNamed:@"BADAchievements" owner:self options:nil] objectAtIndex:0];
CGRect f = temporaryView.frame;
CGRect f = CGRectMake(f.origin.x, f.origin.y, 320, f.size.height);
temporaryView.frame = f;

答案 2 :(得分:0)

我只是搞砸了一下。所以显然代码是可以的,我只需要采用自动布局,我改变了UIView的自动调整功能,因此它不会水平或垂直拉伸。感谢您的回复。