Я пытаюсь настроить пользовательский вид выноски с созданным мной xib, но он не отображается.Пользовательский вид выноски с xib
Мой XIB LocationInfo
выглядит следующим образом
Я создал пользовательский класс UIView для представления в моем XIb, чтобы установить фоновое изображение (не уверен, если это работает, так как я не смог показать XIB)
import Foundation
import UIKit
import MapKit
class AddressView: MKPinAnnotationView{
override func draw(_ rect: CGRect) {
super.draw(rect);
UIGraphicsBeginImageContext(self.frame.size)
UIImage(named: "Location.Info-background")?.draw(in: self.bounds)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.backgroundColor = UIColor(patternImage: image!)
}
override func setSelected(_ selected: Bool, animated: Bool) {
//todo
}
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
//todo
return nil
}
}
Мой пользовательский класс annotationpin следующим
import Foundation
import MapKit
import UIKit
class MapPin: MKPointAnnotation{
var name: String
var street: String
var type: String
var postCode: String
init(name: String, street: String, type: String, postCode: String){
self.name = name
self.street = street
self.type = type
self.postCode = postCode
}
}
и я пытаюсь т o используйте это все, как показано на мой взгляд. Класс контроллера
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
CLGeocoder().reverseGeocodeLocation(manager.location!) { (placemarks, error) in
if (error != nil){
return
}
if placemarks?.count != nil{
let pm = (placemarks?[0])! as CLPlacemark
self.displayLocationInfo(placemark: pm)
}
}
let spanX = 0.00725
let spanY = 0.00725
locationManager.stopUpdatingLocation()
let location = locations.last! as CLLocation
let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: spanX, longitudeDelta: spanY))
self.MapRSR.setRegion(region, animated: true)
self.MapRSR.delegate = self
let mapPin = MapPin(name: "", street: "", type: "", postCode: "")
mapPin.coordinate = center
mapPin.title = "test"
self.MapRSR.addAnnotation(mapPin)
}
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
let pin = mapView.dequeueReusableAnnotationView(withIdentifier: "LocationInfo") ?? AddressView(annotation: annotation, reuseIdentifier: "LocationInfo")
pin.canShowCallout = true
return pin
}
Он просто не покажет мой xib-обзор. Кто-нибудь знает, что я делаю неправильно, или как я могу добиться эффекта, который я хочу, что-то вроде этого.
эта часть 'пусть calloutViewFrame = customView.frame; customView.frame = CGRect (x: -calloutViewFrame.size.width/2.23, y: -calloutViewFrame.size.height-7, width: 315, height: 200) 'гарантирует, что представление не отображается. Когда я выберу это, это покажет, но не похоже, что это должно быть очевидно – NoSixties
@NoSixties, это просто для установки нашего пользовательского размера аннотационного представления, в моем случае я использовал размеры этого фрейма для своих требований. В вашем случае установите свой размер независимо от того, что вы хотеть. – Jeyamahesan
Я знаю, что я попытался установить его, но он, похоже, не работает для меня. – NoSixties