1.scrollView的contentoffset 为view的左上角,减去此时scrollView的左上角
2.而且还不需要让那个红色的view removeFromSuperView ,直接self.view AddSubView 就会自动从原来的那个View脱离开来
3.以后遇到问题的思路。当发现UIView很许多奇特的效果的时候,思考它是不是在不断的改变父控件。
#pragma mark - <UIScrollViewDelegate>
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat imageH = self.imageView.frame.size.height;
CGFloat offsetY = scrollView.contentOffset.y;
if (offsetY >= imageH) {
// 将红色控件添加到控制器的view中,设置Y值为0
CGRect redF = self.redView.frame;
redF.origin.y = 0;
self.redView.frame = redF;
[self.view addSubview:self.redView];
} else {
// 将红色控件添加到scrollView中,设置Y值为图片的高度
CGRect redF = self.redView.frame;
redF.origin.y = 140;
self.redView.frame = redF;
[self.scrollView addSubview:self.redView];
}
// if (offsetY < 0) {
// CGFloat scale = 1 - (offsetY / 70);
// self.imageView.transform = CGAffineTransformMakeScale(scale, scale);
// }
CGFloat scale = 1 - (offsetY / 70);
scale = (scale >= 1) ? scale : 1;
self.imageView.transform = CGAffineTransformMakeScale(scale, scale);
}
4.在storyboard中 添加scrollView的约束时候必须告诉scrollView的contentSize是多少,否则的话,会爆红。
ScrollView xib上的自动布局
- 子控件的尺寸`不能通过UIScrollView`来计算,可以考虑通过以下方式计算
- 可以设置`固定值`(width==100,height==300)
- 可以相对于`UIScrollView以外的其他控件`来计算尺寸
- UIScrollView的`frame`应该通过`子控件以外的其他控件`来计算
- UIScrollView的`contentSize`通过子控件来计算
- 根据`子控件的尺寸`以及`子控件与UIScrollView之间的间距`