gpt4 book ai didi

ios - 通过包含 UIScrollView 的滚动重置 UIViews 的框架

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:00:33 25 4
gpt4 key购买 nike

我有几个 UIView 包含在一个垂直滚动的 UIScrollView 中。我将这些 View 用作临时页面 View ,其行为类似于启用分页的 UIScrollView 的行为。 “页面”使用 UIPageControl 进行翻转,UIPageControl 调用一种方法(见下文)来动画帧变化以来回翻转。

问题:一旦滚动包含 UIView 的 UIScrollView, View 的框架就会重置为其原始值。当我对 View 进行分页时,view.frame.origin.x 值变为负值,以将 View 滑出屏幕。然而,只要我触摸 ScrollView 进行滚动,x 原点就会重置为 0。

我使用的是storyboard,所以展示整个设置并不容易,但是换页方法可以在这里看到:

- (IBAction)changePage:(UIPageControl *)sender {
UIView *view = [[UIView alloc] init];
CGFloat width = self.view.frame.size.width;

if (sender == self.infoPageControl) { view = self.infoView; }
else if (sender == self.tempPageControl) {
view = self.tempView;

CGRect frame = CGRectMake((width - (width * (sender.currentPage+1))),
self.tempHistoryContainerView.frame.origin.y,
self.tempHistoryContainerView.frame.size.width,
self.tempHistoryContainerView.frame.size.height);

[UIView animateWithDuration:0.5 animations:^{
[self.tempHistoryContainerView setFrame:frame];
} completion:^(BOOL finished) {
if (finished) {
self.tempHistoryContainerView.frame = frame;
}
}];
}

CGRect frame2 = CGRectMake((width - (width * (sender.currentPage+1))),
view.frame.origin.y,
view.frame.size.width,
view.frame.size.height);

[UIView animateWithDuration:0.5 animations:^{
[view setFrame:frame2];
} completion:^(BOOL finished) {
if (finished) {
view.frame = frame2;
}
}];
}

最佳答案

View 可能被自动布局约束重置。尝试这样设置:

 self.tmpview.translatesAutoresizingMaskIntoConstraints=YES

这会将您的代码设置的框架转换为自动布局约束,因此它不会拉回您的 tmpview

关于ios - 通过包含 UIScrollView 的滚动重置 UIViews 的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25351601/

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