Я пытаюсь придерживаться UIView сверху во время прокрутки. Пробовал использовать метод max (x: T, y: T), предложенный здесь stackOverflow, но он не работает. Мне удается обнаружить, когда scrollView должен быть переотложен, но обновление фрейма не влияет.Вид не прилипает сверху (не меняет позицию)
import UIKit
class ViewController: UIViewController, UIScrollViewDelegate{
@IBOutlet var objectView: UIView!
@IBOutlet var scrollView: UIScrollView!
//var originalOffsetY : CGFloat!
//var originalOffestX : CGFloat!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let size = CGSize.init(width: self.view.frame.width, height: self.view.frame.height*2)
scrollView.contentSize = size
scrollView.backgroundColor = UIColor.blueColor()
objectView.backgroundColor = UIColor.whiteColor()
scrollView.delegate = self
scrollView.addSubview(objectView)
}
// override func viewWillAppear(animated: Bool) {
// originalOffsetY = objectView.frame.origin.y
// originalOffestX = objectView.frame.origin.x
// }
func scrollViewDidScroll(scrollView: UIScrollView) {
print("ScrollView \(scrollView.contentOffset.y)")
print("ObjectView \(objectView.frame.origin.y)")
let location = CGPointMake(0, scrollView.contentOffset.y)
let size = objectView.frame.size
if scrollView.contentOffset.y >= objectView.frame.origin.y {
objectView.frame = CGRect.init(origin: location, size: size)
print("Detected \(objectView.frame)")
}
// var newRect = objectView.frame
// newRect.origin.y = max(originalOffsetY!, scrollView.contentOffset.y)
// objectView.frame = newRect
}
}
Условие подобран успешно, как можно видеть здесь в Logs. Но мнение остается неизменным. Мне нужно, чтобы objectView немного прокручивал .. от y = 270 до 0 .. но не за его пределами.
Если вам нужно objectView оставаться на месте, как прокручивается Scrollview , вместо того, чтобы сделать его подчиненным scrollView, почему бы не сделать их похожими друг на друга (т. е. сделать objectView подвидью вашего вида viewController вместе с scrollview)? Так я делал, когда пытался реализовать панель поиска в виде таблицы, например, вообще-то, я нахожу ее намного проще! – Sparky
@Sparky - Мне нужно, чтобы objectView немного прокручивал .. от y = 270 до 0 .. но не за его пределами. – user3626615