为啥需要在 pageControl 中为 iOS 13 和 iOS 14 设置不同的常量
Posted
技术标签:
【中文标题】为啥需要在 pageControl 中为 iOS 13 和 iOS 14 设置不同的常量【英文标题】:Why need to set diffrent constant for iOS 13 & iOS 14 in pageControl为什么需要在 pageControl 中为 iOS 13 和 iOS 14 设置不同的常量 【发布时间】:2021-05-04 14:44:30 【问题描述】:我在我的应用程序中使用UIPageControl
并设置约束,例如 -
var trailingAnchor:CGFloat = -16
if #available(ios 14, *)
trailingAnchor = 16
trailing = pageControl.trailingAnchor.constraint(equalTo: contentContainerView.trailingAnchor, constant: trailingAnchor)
不幸的是,我必须根据 iOS 版本编写 trailingAnchor:CGFloat
,否则 pagecontrol
会超出 iOS 13
的视图
& According to this 来自 iOS 14 我们必须对 pageControl 进行约束
那么我可以摆脱var trailingAnchor
吗?
【问题讨论】:
这似乎没有意义......您是否还设置了Leading或Width约束?您能否展示您的全套约束,以及您在 iOS 13 和 14 之间获得的差异的图片(使用相同的尾随值,而不是您在此处显示的调整)? @DonMag 如果我使用的是Trailing
、 Top
和 fix Width
但观察到的奇怪行为如上所述。
【参考方案1】:
UIPageControl
在外观和功能上存在差异,但就布局而言,唯一的差异应该是固有高度。
这是一个简单的例子...添加一个“容器”UIView
,并添加一个页面控件作为该容器的子视图:
class ViewController: UIViewController
let contentContainerView = UIView()
let pageControl = UIPageControl()
override func viewDidLoad()
super.viewDidLoad()
contentContainerView.translatesAutoresizingMaskIntoConstraints = false
pageControl.translatesAutoresizingMaskIntoConstraints = false
contentContainerView.addSubview(pageControl)
view.addSubview(contentContainerView)
// respect safe area
let g = view.safeAreaLayoutGuide
NSLayoutConstraint.activate([
contentContainerView.topAnchor.constraint(equalTo: g.topAnchor, constant: 20.0),
contentContainerView.leadingAnchor.constraint(equalTo: g.leadingAnchor, constant: 20.0),
contentContainerView.trailingAnchor.constraint(equalTo: g.trailingAnchor, constant: -20.0),
contentContainerView.heightAnchor.constraint(equalToConstant: 120.0),
pageControl.leadingAnchor.constraint(equalTo: contentContainerView.leadingAnchor, constant: 16.0),
pageControl.trailingAnchor.constraint(equalTo: contentContainerView.trailingAnchor, constant: -16.0),
pageControl.bottomAnchor.constraint(equalTo: contentContainerView.bottomAnchor, constant: -8.0),
])
contentContainerView.backgroundColor = .systemYellow
pageControl.backgroundColor = .systemTeal
pageControl.numberOfPages = 7
以下是 iOS 14(左侧)和 iOS 13(右侧)之间的外观:
【讨论】:
以上是关于为啥需要在 pageControl 中为 iOS 13 和 iOS 14 设置不同的常量的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Xcode“基于页面的应用程序”项目模板有一个 PageController?
xamarin.ios 使用仅图像代码实现 PageController
为啥 Google Maps Cordova ionic angular 仅在 Android 中工作而在 IOS 中为空白?