2024年最新swift 类似高德地图和58同城上下滑动view,社招面试心得

HTTP

  • HTTP 报文结构是怎样的?

  • HTTP有哪些请求方法?

  • GET 和 POST 有什么区别?

  • 如何理解 URI?

  • 如何理解 HTTP 状态码?

  • 简要概括一下 HTTP 的特点?HTTP 有哪些缺点?

  • 对 Accept 系列字段了解多少?

  • 对于定长和不定长的数据,HTTP 是怎么传输的?

  • HTTP 如何处理大文件的传输?

  • HTTP 中如何处理表单数据的提交?

  • HTTP1.1 如何解决 HTTP 的队头阻塞问题?

  • 对 Cookie 了解多少?

  • 如何理解 HTTP 代理?

  • 如何理解 HTTP 缓存及缓存代理?

  • 为什么产生代理缓存?

  • 源服务器的缓存控制

  • 客户端的缓存控制

  • 什么是跨域?浏览器如何拦截响应?如何解决?

    开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

var upPointY = 0.0 //最高值

var middleY = 0.0 //滑动view 中间判定值

var bottionY = 0.0 //最低值

var currentY = 0.0 //当前的Y值

let maxtop = 80.0

override func awakeFromNib() {

super.awakeFromNib()

countY()

addPanRecoginer()

addTapRecoginer()

}

}

//计算数据值

extension PanView {

func countY(){

upPointY = maxtop //最高值

middleY = Double(((self.superview?.frame.height)! - CGFloat(maxtop))/2) //滑动view 中间判定值

bottionY = Double(self.frame.minY) //最低值

currentY = bottionY

}

}

//手势

extension PanView {

func addPanRecoginer(){

let panRecoginer = UIPanGestureRecognizer.init(target: self, action: #selector(panHandle(pan:)))

self.addGestureRecognizer(panRecoginer)

}

func addTapRecoginer(){

let tapRecoginer = UITapGestureRecognizer.init(target: self, action: #selector(tapHandle(tap:)))

self.addGestureRecognizer(tapRecoginer)

}

}

//事件

extension PanView {

@objc func panHandle(pan:UIPanGestureRecognizer){

let translation = pan.translation(in: self.superview)

let transY = Double(translation.y)

if pan.state == .changed {

if Double(self.frame.origin.y) < upPointY{

currentY = upPointY

}else if Double(self.frame.origin.y) > bottionY{

currentY = bottionY

}else{

self.frame.origin.y = CGFloat(currentY + transY)

}

}else if pan.state == .ended {

if (currentY + transY > upPointY) && (currentY + transY < middleY) { //如果当前位置在最上部和中线中间

currentY = upPointY

}else if (currentY + transY < bottionY) && (currentY + transY > middleY){

currentY = bottionY

}else if currentY + transY < upPointY{

currentY = upPointY

}else{

currentY = bottionY

}

UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 10, initialSpringVelocity: 5, options: [], animations: {

self.frame.origin.y = CGFloat(self.currentY)

}) { (complete) in

最后:

总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。

面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-MLN9RV5n-1715066186510)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值