相关疑难解决方法(0)

Autolayout正在改变旋转时UIScrollView的contentOffset

要试验autolayout和uiscrollview,我一直在使用这个例子

我已经编辑过在滚动视图中包含2个视图,我已经设置了自动布局约束来将视图水平定位,并将它们的大小设置为填充滚动视图框.

UIView *beeView = [[[NSBundle mainBundle] loadNibNamed:@"BeeView" owner:nil options:nil] firstObject];
beeView.translatesAutoresizingMaskIntoConstraints = NO;
[self.scrollView addSubview:beeView];
UIView *beeView2 = [[[NSBundle mainBundle] loadNibNamed:@"BeeView" owner:nil options:nil] firstObject];
beeView2.backgroundColor= [UIColor orangeColor];
beeView2.translatesAutoresizingMaskIntoConstraints = NO;
[self.scrollView addSubview:beeView2];

NSDictionary *views = @{@"beeView":beeView,@"beeView2":beeView2, @"scrollView":self.scrollView};
NSDictionary *metrics = @{@"height" : @200};
[self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[beeView(==scrollView)][beeView2(==beeView)]|" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:metrics views:views]];
[self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[beeView(==scrollView)]|" options:kNilOptions metrics:metrics views:views]];
Run Code Online (Sandbox Code Playgroud)

这很好地产生了我的意图.

但是,如果滚动视图contentOffset非零并且设备从纵向旋转到横向,则滚动视图的内容偏移将自动设置为32px.(见截图) 内容偏移错误

我已经尝试保存contentOffset并将其设置为此保存值,当scrollViewDidEndDecelerating:被调用时可以工作但是很难看,因为滚动视图滚动到32px偏移然后回到我想要的位置.

如何控制滚动视图contentOffset?autolayout约束是否错误?我可以添加额外的约束来控制contentOffset调整视图的大小吗?

objective-c uiscrollview ios autolayout

6
推荐指数
1
解决办法
7085
查看次数

从窗口中删除时 UIScrollview contentOffset 发生变化

我有一个关于 UIScrollView 的奇怪错误。该视图工作正常,直到我将其从窗口中删除(间接地,它是已删除视图的子视图)。

然后我执行一些不相关的动画;当我将视图放在原来的位置时,scrollView 的 contentOffset 发生了变化。

我在 setContentOffset: 函数中放置了一个断点,并得到了以下堆栈:

#0  -[TestScrollView setContentOffset:] (self=0x915fbd0, _cmd=0x7fb34cd, contentOffset={x = 80, y = -0}) at /Users/../TestScrollView.m:19
#1  0x008670ea in -[UIScrollView(Static) _adjustContentOffsetIfNecessary] ()
#2  0x0085db55 in -[UIScrollView(UIScrollViewInternal) _stopScrollingNotify:dealloc:pin:] ()
#3  0x0084e6ff in -[UIScrollView _didMoveFromWindow:toWindow:] ()
#4  0x008444bb in -[UIView(Internal) _didMoveFromWindow:toWindow:] ()
#5  0x008444bb in -[UIView(Internal) _didMoveFromWindow:toWindow:] ()
#6  0x008444bb in -[UIView(Internal) _didMoveFromWindow:toWindow:] ()
#7  0x008444bb in -[UIView(Internal) _didMoveFromWindow:toWindow:] ()
#8  0x00840c72 in -[UIView(Hierarchy) _postMovedFromSuperview:] ()
#9  0x0083f4c6 in __UIViewWasRemovedFromSuperview ()
#10 0x0083f141 in -[UIView(Hierarchy) …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch uiscrollview uikit ios

5
推荐指数
1
解决办法
1085
查看次数