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

时间:2012-02-18 11:25:24

标签: objective-c xcode uiscrollview

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

我在IB UIScrollView中做了并将其与文件所有者连接。 我想现在设置我的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;

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

5 个答案:

答案 0 :(得分:17)

CGRect scrollFrame = CGRrectMake(x, y, w, h);
ScrollView.frame = scrollFrame;

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

CGRect scrollFrame;
scrollFrame.origin = ScrollView.frame.origin;
scrollFrame.size = CGSizeMake(w, h);
ScrollView.frame = scrollFrame;

编辑保持中心不变:

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;

答案 1 :(得分:5)

例如,你需要这样做。

ScrollView.frame = CGRectMake(0, 0, BoardWidth, BoardHeight);

完成后,您还需要设置contentSize属性。这是在UIScrollView的框架后面“延伸”的区域。

如果您只想横向滚动:

ScrollView.contentSize = CGSizeMake(w * BoardWidth, BoardHeight);

如果您只想垂直滚动:

ScrollView.contentSize = CGSizeMake(BoardWidth, h * BoardHeight);

如果要水平和垂直滚动:

ScrollView.contentSize = CGSizeMake(w * BoardWidth, h * BoardHeight);

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

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

ScrollView.pagingEnabled = YES;
ScrollView.contentSize = CGSizeMake(p * BoardWidth, BoardHeight);

其中p是您要显示的页数。

希望它有所帮助。

答案 2 :(得分:4)

您可以按照以下方式执行,

scrollView.frame = CGRectMake(xOrigin,yOrigin,width,height);

如果您要查找scrollview的内容大小,请按以下方式

scrollView.contentSize = CGSizeMake(width,height);

答案 3 :(得分:1)

CGRect Frame = ScrollView.frame

Frame.frame.size.width = BoardWidth;
Frame.frame.size.width = BoardWidth;

ScrollView.frame = Frame;

因为frame是一个结构..你不能直接设置一个对象的框架..你必须做一个Cgrect然后操纵它。

答案 4 :(得分:0)

使用contentSize属性

ScrollView.contentSize = CGSizeMake(320, 520);

它需要比框架大,所以它实际滚动。