2

我有一个带有 Frame = {X=20,Y=88,Width=728,Height=660} 的 UIContainerView 和一个嵌入其中的 UIScrollView。

UIScrollView 报告 Frame = {X=0,Y=0,Width=768,Height=960} 在分页 UIScrollView 时导致宽度偏移 40(金色部分)。它导致以下输出向左分页一次:

在此处输入图像描述

但是,ContentSizeForViewInPopover 报告预期的帧大小 = {Width=728, Height=660}。如何更正 UIScrollView 框架以具有正确的大小?

这是嵌入式 UIViewController 的 ViewDidLoad() 的代码:

var pages = PageControl.Pages = 2;
Console.WriteLine("ScrollView Frame: {0}", ScrollView.Frame);

for(int i = 0; i < pages; i++)
{
    RectangleF frame
    frame.X = ScrollView.Frame.Width * i; // expected {728 * i} but is {768 * i}
    frame.Y = 0;
    frame.Size = ScrollView.Frame.Size;

    Console.WriteLine("Subview frame: {0}", frame);

    ScrollView.AddSubview(
        new UIView(frame) { 
            Bounds = frame,
            BackgroundColor = GetRandomColor() 
        });
    }

    ScrollView.ContentSize = new SizeF(ScrollView.Frame.Width * pages, ScrollView.Frame.Height);
    Console.WriteLine("ScrollView ContentSize = {0}", ScrollView.ContentSize);
4

4 回答 4

4

调用 [self.ScrollView layoutIfNeeded]; 在这条线之前

frame.X = ScrollView.Frame.Width * i; // expected {728 * i} but is {768 * i}

它对我有用,祝你好运

于 2017-10-02T15:08:15.890 回答
2

仔细检查IBparentUIViewController下的 Attributes Inspector, Layout 部分下的“Adjust Scroll View Insets”是否未选中。我有一个类似的问题让我绊倒了一段时间,这就是我需要做的一切来获得正确的布局。

于 2013-10-01T12:22:56.663 回答
0

In IOS 7.0 Use self.automaticallyAdjustsScrollViewInsets=NO; in ViewDidLoad

于 2014-03-25T10:43:08.530 回答
-3

尝试在代码中创建您的 UIScrollView,显然设计器会覆盖您在代码中应用的任何调整。

于 2015-03-02T08:53:09.807 回答