您的位置:首页 > 移动开发 > Swift

swift 下拉放大tableView顶部图片 或 放大顶部地图

2016-10-24 15:14 591 查看

step 1   定义图片或地图的高度,创建图片或地图视图

//地图高度
let mapHeight:CGFloat = 200 + STATUS_HEIGHT

let frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)
tableView = UITableView(frame:frame,style:.Grouped )
tableView.backgroundView = UIImageView(image: UIImage(named: "bgImage"))
tableView.separatorStyle = .None
tableView.delegate = self
tableView.dataSource = self
self.view.addSubview(tableView)
//地图
mapView = MKMapView(frame:CGRectMake(0, -mapHeight, SCREEN_WIDTH, mapHeight))
mapView!.mapType = MKMapType.Standard
mapView!.contentMode = .ScaleAspectFill
mapView!.clipsToBounds = true
tableView.addSubview(self.mapView!)

tableView.contentInset = UIEdgeInsetsMake(mapHeight-STATUS_HEIGHT, 0, 0, 0)


说明:其中 STATUS_HEIGHT 是状态栏高度
let STATUS_HEIGHT :CGFloat = UIApplication.sharedApplication().statusBarFrame.height

scrollViewDidScroll

step 2 在scrollView 代理方法 scrollViewDidScroll 中处理下拉发生的变化

方法1,适用于地图和图片

//地图下拉放大
func scrollViewDidScroll(scrollView: UIScrollView) {
let offsetY = scrollView.contentOffset.y
let radius = -offsetY/mapHeight
if(-offsetY > mapHeight){
mapView.transform = CGAffineTransformScale(CGAffineTransformIdentity, radius, radius)
var frame = mapView.frame
frame.origin.y = offsetY
mapView.frame = frame

}
}

方法2,仅适用于图片

换成图片场景,在方法1的基础上

去掉这一句

mapView.transform = CGAffineTransformScale(CGAffineTransformIdentity, radius, radius)

加上这一句
frame.size.height = -offsetY
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: