gpt4 book ai didi

ios - 如何在导航栏下扩展 View 后更正 View 的中心

转载 作者:行者123 更新时间:2023-11-28 08:47:23 25 4
gpt4 key购买 nike

在这个 View Controller 中,我有一个导航栏、一个 mkmapview 和一个 Collection View 。我有以下代码:

import UIKit
import MapKit

class PhotoAlbumViewController: UIViewController {
var annotation: VTAnnotation!
var span: MKCoordinateSpan!

@IBOutlet weak var mapView: MKMapView!
@IBOutlet weak var collectionView: UICollectionView!

override func viewDidLoad() {
navigationController?.navigationBarHidden = false
mapView.clipsToBounds = false
mapView.addAnnotation(annotation)
mapView.userInteractionEnabled = false
let region = MKCoordinateRegion(center: annotation.coordinate, span: span)
mapView.setRegion(region, animated: false)

}
}

如果我的 MKMapView 设置为位于 Storyboard 中的导航栏和 Collection View 之间,那么图钉将根据需要居中。但我无法显示导航栏的半透明性。

1

如果我的 MKMapView 设置为位于导航栏下方,我可以显示导航栏的半透明,但图钉现在偏离中心。

1

如何让图钉显示在可见区域的中心,并显示导航栏的半透明?

我觉得这应该在文档中。但是我到处找都没有运气,也许我不知道要搜索的关键字。

最佳答案

我一直在努力解决同样的问题,并设法通过使用 setVisibleMapRect(_:edgePadding:animated:) 方法向 MKMapView 添加一些顶部填充来解决它:

    let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)
let region = MKCoordinateRegion(center: annotation.coordinate, span: span)

// 1. Set the Region
mapView.setRegion(region, animated: false)

// 2. Store the currently visible area
let currentMapRect = mapView.visibleMapRect

// 3. Store the sum of the navigation bar height and the top safe area inset
var topPadding: CGFloat = 0
if let safeAreaTopInset = UIApplication.shared.keyWindow?.safeAreaInsets.top,
let navigationBarHeight = navigationController?.navigationBar.frame.height {
topPadding = safeAreaTopInset + navigationBarHeight
}

// 4. Add the top padding to the map's visible area
let padding = UIEdgeInsets(top: topPadding, left: 0.0, bottom: 0.0, right: 0.0)
mapView.setVisibleMapRect(currentMapRect, edgePadding: padding, animated: true)

mapView.addAnnotation(annotation)

关于ios - 如何在导航栏下扩展 View 后更正 View 的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34970464/

25 4 0