嗨,我创建了我的自定义 marker.iconview
marker.iconView = CustomMarkerView(frame: CGRect(x: 0, y: 0, width: 301, height: 36))
这是我的自定义标记 View
import UIKit
class CustomMarkerView: UIView {
var logo = UIImage()
var adress = UILabel()
var price = UILabel()
var icon_like = UIImage(named: "icon_like")
var icon_direction = UIImage(named: "icon_direction")
override init(frame: CGRect) {
super.init(frame: frame)
self.addCustomView()
}
init(frame: CGRect, adress: String, price: String, logo: String) {
super.init(frame: frame)
self.adress.text = adress
self.price.text = price
self.logo = UIImage(named: logo)!
self.addCustomView()
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder has not been implemented")
}
func addCustomView() {
let layerBG = CALayer()
layerBG.frame.size.width = 201
layerBG.frame.size.height = 36
layerBG.backgroundColor = UIColor(patternImage: UIImage(named: "bgMarkerView")!).cgColor
layerBG.position = CGPoint(x: 201, y: 18)
self.layer.addSublayer(layerBG)
}
然后我在 View Controller 的这个 View 中添加更多自定义元素
func addInternalElements(adress: String, price: String, logo: String) {
let logoView = UIView()
let logoImg = UIImage(named: logo)
let logoImage = UIImageView(image: logoImg)
logoView.addSubview(logoImage)
setMarkerLogoConstraint(logoView: logoView, logoImage: logoImage)
let adressLabel = UILabel()
adressLabel.font = UIFont(name: "helveticaneuecyr-roman", size: 9)!
adressLabel.textColor = UIColor.white
adressLabel.numberOfLines = 2
adressLabel.text = adress
let priceLabel = UILabel()
priceLabel.font = UIFont(name: "helveticaneuecyr-roman", size: 11.2)!
priceLabel.textColor = UIColor.white
priceLabel.numberOfLines = 2
priceLabel.text = price
let icon_like = UIImage(named: "icon_like")
let likeBtn = UIButton()
likeBtn.setImage(icon_like, for: .normal)
likeBtn.setImage(icon_like, for: .selected)
likeBtn.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
likeBtn.tag = 5
likeBtn.isMultipleTouchEnabled = true
self.topBarView.addSubview(btnProfileTopBar)
setProfileIconConstraints()
self.marker.iconView?.addSubview(logoView)
self.marker.iconView?.addSubview(adressLabel)
self.marker.iconView?.addSubview(priceLabel)
self.marker.iconView?.addSubview(likeBtn)
self.marker.iconView?.isMultipleTouchEnabled = true
setLogoViewMarkerConstraints(logoView: logoView)
setAdressMarkerConstraints(label: adressLabel, logoView: logoView)
setPriceMarkerConstraints(label: priceLabel, logoView: logoView)
setLikeBtnMarkerConstraints(btn: likeBtn)
}
一切看起来不错,但 uibutton 不可点击(likeBtn.addTarget 不起作用),如果我实现此方法
func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
return false
}
我不明白我如何理解我点击了正确的按钮(会有更多按钮)
我已经解决了这个问题,在 infoWindow 中创建了自定义图标 View
关于ios - marker.iconView?.addSubview(UIButton) 不能用 Gmaps 点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43867287/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) | Powered by Discuz! X3.4 |