iOS swift UISlider改变进度条的高度和圆形滑块的大小

文章目录

1.改变进度条的高度(亲测有效)

swift 复制代码
import UIKit

class CustomSlider: UISlider {
    // 设置轨道高度
    var trackHeight: CGFloat = 10

    // 重写 trackRect(forBounds:) 方法来自定义轨道的尺寸
    override func trackRect(forBounds bounds: CGRect) -> CGRect {
        // 获取默认的轨道矩形
        var rect = super.trackRect(forBounds: bounds)
        // 修改矩形的高度
        rect.size.height = trackHeight
        return rect
    }
}

// 使用示例
let slider = CustomSlider(frame: CGRect(x: 0, y: 0, width: 200, height: 30))
slider.trackHeight = 20 // 设置进度条的宽度为20点

2.改变圆形滑块的大小(亲测有效)

swift 复制代码
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // 创建 UISlider
        let slider = UISlider(frame: CGRect(x: 50, y: 100, width: 300, height: 50))
        self.view.addSubview(slider)

        // 创建一个50x50点的自定义滑块图像
        let thumbImage = UIImage(named: "customThumbImage") // 确保您有一个名为 "customThumbImage" 的50x50点的图像
        slider.setThumbImage(thumbImage, for: .normal)
    }
}
  • 用下面的方法圆形滑块的大小没有变化
swift 复制代码
import UIKit

class CustomSlider: UISlider {
    // 设置滑块的大小
    var thumbSize: CGSize = CGSize(width: 30, height: 30)

    // 重写 thumbRect 方法来自定义滑块的尺寸
    override func thumbRect(forBounds bounds: CGRect, trackRect rect: CGRect, value: Float) -> CGRect {
        // 获取默认的滑块矩形
        let defaultRect = super.thumbRect(forBounds: bounds, trackRect: rect, value: value)
        // 计算新的滑块矩形
        let newRect = CGRect(x: defaultRect.origin.x, y: defaultRect.origin.y + (defaultRect.size.height - thumbSize.height) / 2, width: thumbSize.width, height: thumbSize.height)
        return newRect
    }
}

// 使用示例
let slider = CustomSlider(frame: CGRect(x: 0, y: 0, width: 200, height: 30))
slider.thumbSize = CGSize(width: 40, height: 40) // 设置滑块的大小为40x40
相关推荐
JAVA学习通9 分钟前
OJ竞赛平台----C端题目列表
java·开发语言·jvm·vue.js·elasticsearch
想唱rap33 分钟前
C++ string类的使用
开发语言·c++·笔记·算法·新浪微博
胖咕噜的稞达鸭33 分钟前
C++中的父继子承(2)多继承菱形继承问题,多继承指针偏移,继承组合分析+高质量习题扫尾继承多态
c语言·开发语言·数据结构·c++·算法·链表·c#
JAVA学习通42 分钟前
基本功 | 一文讲清多线程和多线程同步
java·开发语言·多线程
啦啦9117141 小时前
如何理解Java中的并发?
java·开发语言
api_180079054601 小时前
异步数据采集实践:用 Python/Node.js 构建高并发淘宝商品 API 调用引擎
大数据·开发语言·数据库·数据挖掘·node.js
小苏兮1 小时前
【C++】priority_queue和deque的使用与实现
开发语言·c++·学习
啊森要自信2 小时前
【GUI自动化测试】Python 自动化测试框架 pytest 全面指南:基础语法、核心特性(参数化 / Fixture)及项目实操
开发语言·python·ui·单元测试·pytest
赵谨言2 小时前
基于python智能家居环境质量分析系统的设计与实现
开发语言·经验分享·python·智能家居
元亓亓亓2 小时前
考研408--组成原理--day1
开发语言·javascript·考研·计组