移动苹果地图苹果标志“合法”文字

问题描述 投票:0回答:2

有没有办法从 mkmapview 底部操纵、移动苹果徽标和“合法”文本?

类似于谷歌地图。

Image to see what I'm trying to move around

ios swift xcode maps
2个回答
11
投票

您可以通过设置

layoutMargins
mapView
来更改它。例如,这会将其从底部移出:

mapView.layoutMargins.bottom = -100 // removes the 'legal' text
mapView.layoutMargins.top = -100 // prevents unneeded misplacement of the camera

0
投票

如果您设置mapView布局边距,它将偏移地图中所有显示的内容(以注释等为中心)。

如果您只想移动 2 个项目,我建议添加这些扩展:

extension MKMapView {

    var logoView: UIView? {
        for subview in subviews {
            if String.init(describing: subview).localizedCaseInsensitiveContains("MKAppleLogoImageView") {
                return subview
            }
        }
        return nil
    }

    var legalView: UIView? {
        for subview in subviews {
            if String.init(describing: subview).localizedCaseInsensitiveContains("MKAttributionLabel") {
                return subview
            }
        }
        return nil
    }

    func moveLogoView(x: CGFloat, y: CGFloat) {
        logoView?.moveOrigin(x: x, y: y)
    }

    func moveLegalView(x: CGFloat, y: CGFloat) {
        legalView?.moveOrigin(x: x, y: y)
    }

}

extension UIView {

    func moveOrigin(x: CGFloat, y: CGFloat) {
        let originX = self.frame.origin.x
        let originY = self.frame.origin.y
        self.frame.origin = CGPointMake(originX + x, originY + y)
    }

}

然后,地图加载后就可以使用了。在 viewDidLoad() 中与 DispatchQueue.main.asyncAfter 或 didLayoutSubviews() 一起工作

mapView.moveLogoView(x: -40, y: 60)
mapView.moveLegalView(x: 20, y: 60)
© www.soinside.com 2019 - 2024. All rights reserved.