Как программно установить размер кадра 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);
он должен быть больше, чем кадр, чтобы он фактически прокручивался.