ios - 当前页面的 UIPageControl 点大小
问题描述
我正在尝试找出如何使所选页面的点比其他页面稍大,如下所示:
第 1 页:
第2页:
我可以更改所有点的点颜色、大小、背景等,但不能更改当前页面的特定点。
如何仅更改当前页面的点大小?
这可以是 Swift 或 Objective-C。
解决方案
迅速
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
let x = targetContentOffset.pointee.x
pageControl.currentPage = Int(x / self.frame.width)
// on each dot, call the transform of scale 1 to restore the scale of previously selected dot
pageControl.subviews.forEach {
$0.transform = CGAffineTransform(scaleX: 1, y: 1)
}
// transform the scale of the current subview dot, adjust the scale as required, but bigger the scale value, the downward the dots goes from its centre.
// You can adjust the centre anchor of the selected dot to keep it in place approximately.
let centreBeforeScaling = self.pageControl.subviews[self.pageControl.currentPage].center
self.pageControl.subviews[self.pageControl.currentPage].transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
// Reposition using autolayout
self.pageControl.subviews[self.pageControl.currentPage].translatesAutoresizingMaskIntoConstraints = false
self.pageControl.subviews[self.pageControl.currentPage].centerYAnchor.constraint(equalTo: self.pageControl.subviews[0].centerYAnchor , constant: 0)
self.pageControl.subviews[self.pageControl.currentPage].centerXAnchor.constraint(equalTo: self.pageControl.subviews[0].centerXAnchor , constant: 0)
// self.pageControl.subviews[self.pageControl.currentPage].layer.anchorPoint = centreBeforeScaling
}
推荐阅读
- variables - DBeaver:通过连接保存默认变量?
- puppeteer - 静态页面的img引用的当前文件夹是什么
- ios - Flutter firebase 消息传递后台通知不起作用。前台工作,但后台不工作。(数据信息)
- python - 将字符串转换为 numpy 数组以在数据框线性回归上运行 for 循环
- python - 如何访问内部类中的外部类属性?
- python - 物品不减 Django
- amazon-sqs - healthcheck-err:无法从 SQS 队列中提取消息,错误:执行已过期
- angular - 如何在 Angular 12 项目中使用 ng2-file-upload 发送查询参数?
- git - 使用 Bitbucket 如何将拉取请求合并到我的本地分支中,以便在合并到 master 之前对其进行测试
- javascript - 如何将事件从具有较高 z-index 的元素传播到不包括点击事件的元素?