Как установить размер фрейма 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 ответов
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;
вам нужно сделать это, например.
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
- это количество страниц, которые вы хотите отобразить.
надеюсь, что это помогает.
Вы можете сделать это, как показано ниже
scrollView.frame = CGRectMake(xOrigin,yOrigin,width,height);
Если вы ищете размер содержимого scrollview, то он, как показано ниже,
scrollView.contentSize = CGSizeMake(width,height);
CGRect Frame = ScrollView.frame
Frame.frame.size.width = BoardWidth;
Frame.frame.size.width = BoardWidth;
ScrollView.frame = Frame;
Так как frame является структурой..вы не можете установить фрейм объекта напрямую.. Вам нужно будет сделать Cgrect, а затем манипулировать им.
использование свойства contentSize
ScrollView.contentSize = CGSizeMake(320, 520);
он должен быть больше кадра, поэтому он фактически прокручивается.