如何以编程方式设置UIScrollView框架的大小?

Kon*_*asa 14 xcode objective-c uiscrollview

我是新手,所以我的问题可以很明显,但到目前为止我找不到任何解决方案.

我在IB UIScrollView中进行了操作并将其与File的所有者连接.我想现在设置我的UIScrollView(名为ScrollView)的帧大小.

const CGFloat BoardWidth = 320;
const CGFloat BoardHeight = 400;

//I tried this way but 'Expression is assignable' - said Xcode
ScrollView.frame.size.width = BoardWidth;
ScrollView.frame.size.height = BoardWidth;
Run Code Online (Sandbox Code Playgroud)

那么我怎样才能最简单地设置自己的ScrollView框架大小?

sch*_*sch 17

CGRect scrollFrame = CGRrectMake(x, y, w, h);
ScrollView.frame = scrollFrame;
Run Code Online (Sandbox Code Playgroud)

或者,如果您只需要改变宽度和高度;

CGRect scrollFrame;
scrollFrame.origin = ScrollView.frame.origin;
scrollFrame.size = CGSizeMake(w, h);
ScrollView.frame = scrollFrame;
Run Code Online (Sandbox Code Playgroud)

编辑保持中心不变:

CGRect scrollFrame;
CGFloat newX = scrollView.frame.origin.x + (scrollView.frame.size.width - w) / 2;
CGFloat newY = scrollView.frame.origin.y + (scrollView.frame.size.height - y) / 2;
scrollFrame.origin = CGPointMake(newX, newY);
scrollFrame.size = CGSizeMake(w, h);
scrollView.frame = scrollFrame;
Run Code Online (Sandbox Code Playgroud)


Lor*_*o B 5

例如,你需要这样做.

ScrollView.frame = CGRectMake(0, 0, BoardWidth, BoardHeight);
Run Code Online (Sandbox Code Playgroud)

完成后,您还需要设置contentSize属性.它是在你的框架后面"延伸"的区域UIScrollView.

如果只想水平滚动:

ScrollView.contentSize = CGSizeMake(w * BoardWidth, BoardHeight);
Run Code Online (Sandbox Code Playgroud)

如果只想垂直滚动:

ScrollView.contentSize = CGSizeMake(BoardWidth, h * BoardHeight);
Run Code Online (Sandbox Code Playgroud)

如果要水平和垂直滚动:

ScrollView.contentSize = CGSizeMake(w * BoardWidth, h * BoardHeight);
Run Code Online (Sandbox Code Playgroud)

其中wh是增加宽度和/或高度的通用值.

如果你想要一个水平(例如)离散滚动(例如你有一些页面具有相同的屏幕尺寸).

ScrollView.pagingEnabled = YES;
ScrollView.contentSize = CGSizeMake(p * BoardWidth, BoardHeight);
Run Code Online (Sandbox Code Playgroud)

p您要显示的页数在哪里.

希望能帮助到你.