- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我第一次使用 uipagecontrol,我在使用它时遇到了问题。问题是即使我在一开始就将它从 0 更改为 1,当前点也没有任何作用,该点仍停留在最左边的点上。为什么会这样?
这是我的代码,collectionview 和 View Controller 在 2 个单独的类上,这是 View Controller 代码
class introViewController: UIViewController {
let skipBtn:UIButton = {
let content = UIButton()
content.titleLabel?.textAlignment = .right
content.setTitle("Skip", for: .normal)
content.setTitleColor(.black, for: .normal)
content.titleLabel?.font = UIFont(name: "copperplate", size: 16)
content.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)
content.addTarget(self, action: #selector(mainController), for: .touchUpInside)
return content
}()
let contentSlider:introCollectionView = {
let content = introCollectionView()
return content
}()
let pageLbl:UILabel = {
let content = UILabel()
content.font = UIFont(name: "copperplate", size: 16)
content.font = UIFont.boldSystemFont(ofSize: 16)
return content
}()
lazy var pageView:UIPageControl = {
let content = UIPageControl()
content.size(forNumberOfPages: 19)
content.currentPage = 0
content.numberOfPages = 3
content.currentPageIndicatorTintColor = .red
content.pageIndicatorTintColor = .darkGray
return content
}()
let nextBtn:UIButton = {
let content = UIButton()
content.titleLabel?.textAlignment = .right
content.setTitle("Next", for: .normal)
content.setTitleColor(.black, for: .normal)
content.titleLabel?.font = UIFont(name: "copperplate", size: 16)
content.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)
return content
}()
override func viewDidLoad() {
super.viewDidLoad()
var currentPage = "Page 1"
var currentTitle = "easy way to organize your life"
var currentSubtitle = "all you have to do is say the word the app understand your command and it will save and organize the data for you"
var currentImage = "introNote"
pageLbl.text = "\(currentPage)"
skipBtn.translatesAutoresizingMaskIntoConstraints = false
contentSlider.translatesAutoresizingMaskIntoConstraints = false
pageLbl.translatesAutoresizingMaskIntoConstraints = false
pageView.translatesAutoresizingMaskIntoConstraints = false
nextBtn.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(skipBtn)
view.addSubview(contentSlider)
view.addSubview(pageLbl)
view.addSubview(pageView)
view.addSubview(nextBtn)
skipBtn.topAnchor.constraint(equalTo: view.topAnchor, constant: 20).isActive = true
skipBtn.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -10).isActive = true
skipBtn.widthAnchor.constraint(equalToConstant: 50).isActive = true
skipBtn.heightAnchor.constraint(equalToConstant: 50).isActive = true
pageLbl.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -10).isActive = true
pageLbl.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 10).isActive = true
pageLbl.widthAnchor.constraint(equalToConstant: 100).isActive = true
pageLbl.heightAnchor.constraint(equalToConstant: 50).isActive = true
pageView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -18).isActive = true
pageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
pageView.widthAnchor.constraint(equalToConstant: 100).isActive = true
pageView.heightAnchor.constraint(equalToConstant: 30).isActive = true
nextBtn.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -10).isActive = true
nextBtn.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -10).isActive = true
nextBtn.widthAnchor.constraint(equalToConstant: 50).isActive = true
nextBtn.heightAnchor.constraint(equalToConstant: 50).isActive = true
contentSlider.topAnchor.constraint(equalTo: skipBtn.bottomAnchor, constant: 0).isActive = true
contentSlider.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
contentSlider.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
contentSlider.bottomAnchor.constraint(equalTo: pageLbl.topAnchor, constant: 0).isActive = true
}
@objc func mainController(){
let next = self.storyboard?.instantiateViewController(withIdentifier: "mainViewController") as! mainViewController
self.present(next, animated: true, completion: nil)
}
@objc func changeDot(current:Int){
print("the current is \(current)")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
这是collectionview的代码
class introCollectionView: UIView,UICollectionViewDelegateFlowLayout,UICollectionViewDataSource {
let arrayImg = [
"introhelo",
"introhelo",
"introhelo"]
let arrayTitle = [
"hello",
"hello",
"hello"]
let arraySubTitle = [
"hello",
"hello",
"hello"
]
var currentIndex = 0
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return arrayTitle.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! introCollectionViewCell
cell.contentImg.image = UIImage(named: "\(arrayImg[indexPath.row])")
cell.contentTitleLbl.text = "\(arrayTitle[indexPath.row])"
cell.contentSubTitleLbl.text = "\(arraySubTitle[indexPath.row])"
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: self.frame.width, height: self.frame.height)
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
if let indexPath = collectionViews.indexPathsForVisibleItems.first {
let intro = introViewController()
intro.pageView.currentPage = indexPath.row + 1
print(indexPath.row)
}
}
// func scrollViewDidScroll(_ scrollView: UIScrollView) {
// currentIndex = Int((collectionViews.contentOffset.x ?? 0.0) / (collectionViews.frame.size.width ?? 0.0))
// let intro = introViewController()
// intro.pageView.currentPage = currentIndex
// print(currentIndex)
// }
lazy var collectionViews: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
cv.isPagingEnabled = true
cv.backgroundColor = UIColor.clear
cv.dataSource = self
cv.delegate = self
return cv
}()
override init(frame: CGRect) {
super.init(frame: frame)
setupViews()
}
func setupViews(){
collectionViews.register(introCollectionViewCell.self, forCellWithReuseIdentifier: "cell")
collectionViews.translatesAutoresizingMaskIntoConstraints = false
backgroundColor = UIColor.clear
addSubview(collectionViews)
collectionViews.topAnchor.constraint(equalTo: topAnchor, constant: 0).isActive = true
collectionViews.bottomAnchor.constraint(equalTo: bottomAnchor, constant: 0).isActive = true
collectionViews.centerYAnchor.constraint(equalTo: centerYAnchor, constant: 0).isActive = true
collectionViews.centerXAnchor.constraint(equalTo: centerXAnchor, constant: 0).isActive = true
collectionViews.widthAnchor.constraint(equalTo: widthAnchor, constant: 0).isActive = true
}
@objc func scrolling(){
//collectionViews.scrollToItem(at: 1, at: .centeredHorizontally, animated: true)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
最佳答案
实际上问题是分配给pageView.currentPage
与错误的对象。您正在创建 introViewController
的新对象分配 pageView.currentPage
这与当前呈现的对象不同,因此您不会在呈现的 introViewController
中看到任何变化。 .
要解决此问题,您可以采用委托(delegate)或闭包模式来更新页码 introCollectionView
在introViewController
.
这是一个解决方案,在 introCollectionView
中声明一个闭包如下所示,
class introCollectionView: UIView,UICollectionViewDelegateFlowLayout,UICollectionViewDataSource {
var onPageChange: ((Int) ->Void)?
....
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
if let indexPath = collectionViews.indexPathsForVisibleItems.first {
self.onPageChange?(indexPath.row + 1)
}
}
}
然后在introViewController
的 viewDidLoad
, 你可以注册一个闭包来更新 pageView
的当前页面如下,
override func viewDidLoad() {
super.viewDidLoad()
self.contentSlider.onPageChange = {[weak self] pageNumber in
self?.pageView.currentPage = pageNumber
}
....
}
题外话:你可能来自不同的背景,但在 Swift
,类(或任何类型)名称应以大写字母开头。
关于ios - uipagecontrol 当前不动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51461420/
我有一个 RelativeLayout,我从 drawable 设置了背景。我能够将 RelativeLayout 的背景更改为另一个RadioButton 被选中。但是当它发生变化时我该如何给它一个
我正在尝试在 Google 的 Play 报亭应用中复制此动画: http://i.imgur.com/UuX1PRO.webm 我的布局看起来像这样: ... more
我一直在评估 Airflow 。我有一个用例,我有一个每小时运行一次的工作流,以获得每小时的数据聚合。另一个每天运行以获得相同的每日聚合。是否可以创建一个组合工作流,其中仅当所有小时聚合在过去一天都成
我有下一个结构: Activity 1: Activity 2: Form to add new item to the recycler View. RecyclerView
我只是想知道 JavaFx 中是否有任何简单的动 Canvas 局方法,例如 VBox 和 HBox。我希望我的应用程序在指定时间后更改 VBox 的背景颜色。但我意识到没有任何类似于 FillTra
我正在使用 Angular 4 动画在按钮上测试一个简单的淡入/淡出动画。我遇到的问题是,因为我使用的是 bool 值,所以没有任何东西被触发。从开发工具来看,它看起来像一个 .ng-animatin
有没有人在 SublimeREPL 中使用 irb 交换 pry 有任何运气?我很接近,我想。我没有收到错误,但是当我输入命令时也没有收到响应。每次我点击返回时,它的行为就像缓冲区被重置一样。 我正在
今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来! 犹记得我在做机器学习和数据分析方面的毕设时,
简而言之,我想缩放 View - 就像 Android Market 一样,当您单击“更多”按钮时,例如在“描述”上。 我发现,Android Market 具有以下结构的布局: > 64d
我似乎无法让它工作。 我正在尝试每天发送一个给定的文件,其名称类似于“file_{{ds_nodash}}.csv”。 问题是我似乎无法将此名称添加为文件名,因为它似乎无法使用。在电子邮件的正文或主题
当您调整窗口大小时, float 的 div 将按预期换行到下一行。但我真的很希望这种布局变化是动画化的。 编辑:顺便说一句,找到一个不依赖于 JQuery 的解决方案会很好。如果需要,我不介意编写自
我有一个复杂的数据处理管道,目前在单台机器上用 Python 实现。 管道是围绕处理属于一系列实现文档、页面、单词等的自定义类的对象而构建的。该管道中的大多数操作都是令人尴尬地并行的——它们处理单个文
我是一名优秀的程序员,十分优秀!