Старый поток, который я знаю, но если вы ищете отзывчивое решение, это дополнение jQuery поможет:
$(window).on('resize',sticky);
$(document).bind("ready", function() {
sticky();
});
function sticky() {
var fh = $("footer").outerHeight();
$("#push").css({'height': fh});
$("#wrapper").css({'margin-bottom': -fh});
}
Полное руководство можно найти здесь: https: // pixeldesigns .co.uk / блог / отзывчивым-JQuery-липкий сноска /
Этот
mapView.delegate = self
с
class ViewController: UIViewController, MGLMapViewDelegate {
отвечает за их вызов, внутри фрейма MapKit класс MKMapView
имеет свойство делегата, когда вы установить правый делегат внутренне, это происходит
delegate?.mapView(self,//)
и вы не должны возвращать ноль здесь
func mapView(_ mapView: MGLMapView, viewFor annotation: MGLAnnotation) -> MGLAnnotationView? {
Это функции-делегаты, а не обычные функции, которые вы вызываете, они больше похожи на функции, которые вызываются на основе действия, и вы установили MapView.delegate
на self
, поэтому, когда функции вызывают в MapView
относительно в случае, когда они их вызвали, они вернутся к реализованной стороне в вашем self
, в этом случае UIViewController
, я предлагаю прочитать больше о делегатах здесь , поэтому быстрый ответ, функции не вызываются в тот же класс.
Это методы делегата, объявленные протоколом под названием MGLMapViewDelegate
, который реализован в вашем классе
class ViewController: UIViewController, MGLMapViewDelegate { ... }
Установив delegate
некоторого объекта в качестве вашего контроллера (= self
), как вы это сделали с MGLMapView
в viewDidLoad
mapView.delegate = self
вы говорите, что при вызове какого-либо метода для делегата mapView
будет вызван метод, реализованный вами, например, mapView(_:viewFor:) -> MGLAnnotationView?
. [1113 ]
В любом случае, ваш mapView
должен быть переменной экземпляра, в противном случае вы потеряли ссылку на него
class ViewController: UIViewController, MGLMapViewDelegate {
var mapView: MGLMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView = MGLMapView(frame: view.bounds)
...
}
}