gpt4 book ai didi

swift - 如何以编程方式向 UIStackView 添加安全区域布局?

转载 作者:行者123 更新时间:2023-11-30 11:22:12 28 4
gpt4 key购买 nike

我想知道是否有一种聪明的方法可以以编程方式将安全区域布局添加到 UIStackView 中。目前这是我的设置:

// AppDelegate.didFinishLaunchingWithActions
let rvc = window?.rootViewController
adViewController = AdViewController(contentViewController: rvc!)
window?.rootViewController = adViewController
window?.makeKeyAndVisible()

// AdViewController.swift
private var bannerView = GADBannerView(adSize: kGADAdSizeBanner)
let contentViewController: UIViewController

init(contentViewController: UIViewController) {
self.contentViewController = contentViewController
super.init(nibName: nil,bundle: nil)
}

override func loadView() {
let stackView = UIStackView(arrangedSubviews: [contentViewController.view, bannerView])
stackView.distribution = .fill
stackView.axis = .vertical
self.addChildViewController(contentViewController)
contentViewController.didMove(toParentViewController: self)
view = stackView
self.stackView = stackView
}

override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor(white: 0.1, alpha: 1.0)
setupAdbanner()
let adsDisabled = MKStoreKit.shared().isProductPurchased(AppConfig.kRemoveAdsID)
self.setAdvertisingViewHidden(adsDisabled, animated: false)

NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: Notification.Name.UIApplicationWillEnterForeground, object: nil)
}

private func setupAdbanner() {
bannerView.delegate = self
bannerView.backgroundColor = .clear
bannerView.rootViewController = self
bannerView.adUnitID = AppConfig.kAdUnitIDBanner
}

我尝试以这种方式实现它Use Safe Area Layout programmatically 。但看起来这样它不适用于 UIStackViews。

目前看起来是这样的。我需要它位于安全区域上方。 AdMob display

最佳答案

不确定是否是最好的方法,但是当我遇到类似的情况时,我是如何以编程方式做到这一点的:

CGFloat yPos = [UIScreen mainScreen].bounds.size.height;
CGFloat width = [UIScreen mainScreen].bounds.size.width;
if (@available(iOS 11.0, *)) {
UIWindow *window = UIApplication.sharedApplication.keyWindow;
CGFloat bottomPadding = window.safeAreaInsets.bottom;
CGFloat topPadding = window.safeAreaInsets.top;
CGFloat leftPadding = window.safeAreaInsets.left;
CGFloat rightPadding = window.safeAreaInsets.right;
yPos -= (bottomPadding + topPadding);
width -= (leftPadding + rightPadding);
}

关于swift - 如何以编程方式向 UIStackView 添加安全区域布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51144202/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com