實現過程
錯誤方向
一開始打算在使用tableview的cell中載入scrollview實現,然後發現非常吃記憶體,而且無法實時變化,背景圖片每次在拖動結束後才會改變,儘管方法實現在scrollViewDidScroll
內,依然毫無卵用,遂斃了
正確方向-目前
將圖片設定在self.view上後新增tableview
self.bkimv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"001"]];
self.originalHeight = self.bkimv.bounds.size.height*(ScreenWidth*IMAGESCALE/self.bkimv.bounds.size.width);
self.originalWidth = ScreenWidth*IMAGESCALE;
self.bkimv.bounds = CGRectMake(0, 0, self.originalWidth, self.originalHeight);複製程式碼
self.table.backgroundColor = [UIColor clearColor];
[self.view addSubview:self.table];複製程式碼
給予作為廣告的cell一個背景色透明,使該cell能夠顯示圖片
///根據編輯狀態變化
if (model.isShow) {
self.contentView.backgroundColor = [UIColor clearColor];
self.nameLabel.text = @"";
}else {
self.contentView.backgroundColor = [UIColor whiteColor];
self.nameLabel.text = model.name;
}
複製程式碼
在scrollViewDidScroll
內實現圖片位置的計算
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat w = self.originalWidth;//圖片寬度
CGFloat h = self.originalHeight;//圖片高度
CGFloat x = ScreenWidth/2;//中心點x座標
CGFloat y = scrollView.contentOffset.y/2+self.originalHeight/3;//中心點y座標
CGFloat scale = 1;//圖片移動時比例變化率
if (ISSETSCALE) {
scale = (1-scrollView.contentOffset.y/ScreenHeight);
}
NSIndexPath *path= [NSIndexPath indexPathForRow:8 inSection:0];
CGRect rectInTableView = [self.table rectForRowAtIndexPath:path];
CGRect rectInSuperview = [self.table convertRect:rectInTableView toView:[self.table superview]];
//cell相對於螢幕位置
NSLog(@"%f %f %f",scale, y , rectInSuperview.origin.y);
self.bkimv.center = CGPointMake(x, y);
if (rectInSuperview.origin.y <= (y-h*scale/2)) {
//廣告cell到達圖片最上部時使圖片與cell同時移動
self.bkimv.center = CGPointMake(x, rectInSuperview.origin.y+h*scale/2);
} else if ((rectInSuperview.origin.y + ADCellHeight) >= (y+h*scale/2)) {
//廣告cell到達圖片最底部時使圖片與cell同時移動
self.bkimv.center = CGPointMake(x, (rectInSuperview.origin.y + ADCellHeight)-h*scale/2);
} else {
self.bkimv.bounds = CGRectMake(0, 0, w*scale, h*scale);
}
}複製程式碼
OVER
順便圖片暴露死宅屬性
不說了我的肥宅快樂水快沒氣了