Как программно установить размер кадра 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?

Ответы

Ответ 1

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;

Ответ 2

вам нужно сделать это, например.

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);

где w и h - общие значения, чтобы увеличить вашу ширину и/или высоту.

Если вы хотите иметь горизонтальную (например) дискретную прокрутку (например, у вас есть некоторые страницы с одинаковым размером экрана).

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

где p - количество страниц, которые вы хотите отобразить.

Надеюсь, что это поможет.

Ответ 3

Вы можете сделать это, как показано ниже,

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

Если вы ищете размер содержимого scrollview, то он, как показано ниже,

scrollView.contentSize = CGSizeMake(width,height);

Ответ 4

CGRect Frame = ScrollView.frame

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

ScrollView.frame = Frame;

Поскольку frame - это структура. Вы не можете напрямую установить фрейм объекта. Вам нужно будет сделать Cgrect и затем манипулировать им.

Ответ 5

с использованием свойства contentSize

ScrollView.contentSize = CGSizeMake(320, 520);

он должен быть больше, чем кадр, чтобы он фактически прокручивался.