Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UIPageControl在iOS 14中不可见_Ios_Swift_Xcode_Uikit_Ios14 - Fatal编程技术网

UIPageControl在iOS 14中不可见

UIPageControl在iOS 14中不可见,ios,swift,xcode,uikit,ios14,Ios,Swift,Xcode,Uikit,Ios14,我有一个UIPageControl,在过去6个月里,它在我的生产应用程序中运行良好。但是,在将所有测试设备更新为iOS 14并将Xcode更新为v12之后,我在tableView单元格中的UIPageControl不再可见 我的代码中没有任何更改,这只是由于软件更新而自发发生的。据我所知,苹果改变了UITableView的视图层次结构,并修改了页面控件。有人知道为什么这个页面控件位置正确,但仍然不可见吗 我自己最近也被这个问题困扰着,在花了很多时间尝试不同的方法后,我可以通过简单地用新的UIPa

我有一个UIPageControl,在过去6个月里,它在我的生产应用程序中运行良好。但是,在将所有测试设备更新为iOS 14并将Xcode更新为v12之后,我在tableView单元格中的UIPageControl不再可见

我的代码中没有任何更改,这只是由于软件更新而自发发生的。据我所知,苹果改变了UITableView的视图层次结构,并修改了页面控件。有人知道为什么这个页面控件位置正确,但仍然不可见吗


我自己最近也被这个问题困扰着,在花了很多时间尝试不同的方法后,我可以通过简单地用新的UIPageController替换故事板中当前的UIPageController来让它工作。

在尝试了很多之后,对我来说唯一有效的方法就是通过添加常量来增加UIPageControl的宽度。这对我来说很好


ios14的pagecontrol中还添加了一些新功能。您可以参考此链接:

iOS 14无法设置点边框,因为UIPageControl子视图不是页面点。
您可以更改情节串连板或xib上的点颜色,但不能更改点边框。

如果UIPageControl在iOS 14中不可见,则只需添加宽度约束并指定关系“大于或等于”,或增加UIPageControl的宽度。

尝试以下一种方法进行整理:

  • 将宽度和高度增加两倍或三倍
  • 向页面视图控制器添加约束
  • 在脚本或XIB中添加页面控件。这将是非常容易超过2点

  • 我也有同样的问题,当UIPageControl的宽度很短时,例如80pt,我在iOS 14或更高版本中设置了
    pageControl.backgroundStyle=.minimal
    。它适合我。

    UIPageControl在iOS 14中的工作方式略有不同。如果宽度太小,它不会显示任何内容,这可能会令人惊讶


    很好的说明,谢谢
    import UIKit
    
    class ViewController: UIViewController {
        
        lazy var label: UILabel = UILabel()
        var widthConstraint: NSLayoutConstraint!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let pageControl = UIPageControl()
            pageControl.numberOfPages = 10
            pageControl.currentPage = 3
            pageControl.pageIndicatorTintColor = .red
            pageControl.currentPageIndicatorTintColor = .green
            pageControl.layer.borderWidth = 1
            pageControl.layer.borderColor = UIColor.purple.cgColor
            widthConstraint = pageControl.widthAnchor.constraint(equalToConstant: 100)
            widthConstraint.isActive = true
            
            let slider = UISlider()
            slider.minimumValue = 0
            slider.maximumValue = 300
            slider.value = 100
            slider.widthAnchor.constraint(equalToConstant: 200).isActive = true
            slider.addTarget(self, action: #selector(sliderValueDidChange(_:)), for: .valueChanged)
            
            let stackView = UIStackView(arrangedSubviews: [label, pageControl, slider])
            stackView.axis = .vertical
            stackView.alignment = .center
            stackView.spacing = 40
            
            view.addSubview(stackView)
            stackView.translatesAutoresizingMaskIntoConstraints = false
            NSLayoutConstraint.activate([
                stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
                stackView.widthAnchor.constraint(equalTo: view.widthAnchor)
            ])
            
            updateLabel()
        }
    
    
        @objc
        func sliderValueDidChange(_ sender: Any?) {
            guard let slider = sender as? UISlider else { return }
            widthConstraint.constant = CGFloat(slider.value)
            updateLabel()
        }
        
        func updateLabel() {
            if #available(iOS 14.0, *) {
                label.text = "iOS 14 PageControl width: \(widthConstraint.constant.rounded())"
            } else {
                label.text = "iOS 13 PageControl width: \(widthConstraint.constant.rounded())"
            }
        }
    }