gpt4 book ai didi

ios - UIScrollView 与 subView 缩放

转载 作者:行者123 更新时间:2023-12-01 19:19:38 25 4
gpt4 key购买 nike

我想实现一个里面有几个 UIViews 的 ScrollView 。最左边的项目需要比其他项目大。所以我的问题是这个。每当一个项目离开屏幕向左(它的 origin.x 小于 15)时,我需要将项目从 470x440 缩小到 235x220 像素。这实现起来相当简单。问题是移动到像素 480 左侧的项目需要从 235x220 像素放大到 470x440 像素,并且需要向左移动 235 像素(以免覆盖右侧的项目,而是移动到离开元素“收缩”时留下的空间。

我已经尝试了几种不同的方法,但我不能让动画看起来很好,而且这里和那里都有一堆小故障。

有谁知道我将如何实现这种类型的功能?请注意,我不想缩放,但我想调整 ScrollView 中元素的大小,使最左边的元素(在屏幕上可见)是其他元素大小的两倍。

最佳答案

万一其他人可能感兴趣,我最终在scrollViewDidScroll中得到了以下内容:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {        
float contentOffset = scrollView.contentOffset.x;
int leavingElementIndex = [_scrollView indexOfElementLeavingScene:scrollView.contentOffset.x];
int entereingElementIndex = leavingElementIndex + 1;

if (leavingElementIndex >= 0 && contentOffset > 0) {
CGRect leavingFrame = [[[scrollView subviews] objectAtIndex:leavingElementIndex] frame];
CGRect enteringFrame = [[[scrollView subviews] objectAtIndex:entereingElementIndex] frame];

float scalePerentage = (contentOffset - (_scrollView.smallBoxWidth * leavingElementIndex))/(_scrollView.smallBoxWidth);
enteringFrame.size.width = _scrollView.smallBoxWidth + (_scrollView.smallBoxWidth * scalePerentage);
enteringFrame.size.height = _scrollView.smallBoxHeight + (_scrollView.smallBoxHeight * scalePerentage);
enteringFrame.origin.x = [_scrollView leftMostPointAt:entereingElementIndex] - (_scrollView.smallBoxWidth * scalePerentage);

[[[scrollView subviews] objectAtIndex:entereingElementIndex] setFrame:enteringFrame];

leavingFrame.size.width = _scrollView.largeBoxWidth - (_scrollView.smallBoxWidth * scalePerentage);
leavingFrame.size.height = _scrollView.largeBoxHeight - (_scrollView.smallBoxHeight * scalePerentage);

[[[scrollView subviews] objectAtIndex:leavingElementIndex] setFrame:leavingFrame];

//Reset the other visible frames sizes
int index = 0;
for (UIView *view in [scrollView subviews]) {

if([view isKindOfClass:[SlidingView class]] && index > entereingElementIndex) {
CGRect frame = view.frame;
frame.size.width = _scrollView.smallBoxWidth;
frame.size.height = _scrollView.smallBoxHeight;
frame.origin.x = [_scrollView leftMostPointAt:index];
[view setFrame:frame];
}

index++;
}

}
}

这就是它最终的样子:

End Result http://stuff.haagen.name/iOS%20scroll%20resize.gif

关于ios - UIScrollView 与 subView 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10916102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com