iOS UISlider自定义样式详解

iOS 的 UISlider 控件自带样式虽然够用,但想让界面更有范儿,自定义一下还是挺有必要的。轨道、滑块这些细节一改,整体质感立马就不一样了。

轨道的自定义可以从两张图入手,用setMinimumTrackImage:forState:setMaximumTrackImage:forState:替换默认轨道,渐变、纹理都能加上去,样子立马不普通。

滑块部分比较关键,用setThumbImage:forState:直接换图就行了。还可以通过thumbRectForBounds:trackRect:value:微调位置和大小,调得顺手又顺眼。

iOS 14 开始,setValueIndicatorImage:forState:还能加自定义的数值提示图标,虽然用得不多,但做进阶交互时挺加分的。

事件监听用addTarget:action:forControlEvents:就行,不复杂。想搞点动画?配合layoutSubviews加点 Core Animation,效果出来了。

如果你对滑动的节奏要求高,比如想让它更顺或者调节更精细,可以改setValue:animated:方法,自定义滑动行为。

文末这段代码直接贴上了用法,简单明了:

let minimumTrackImage = UIImage(named: "min_track")
let maximumTrackImage = UIImage(named: "max_track")
slider.setMinimumTrackImage(minimumTrackImage, for: .normal)
slider.setMaximumTrackImage(maximumTrackImage, for: .normal)
let thumbImage = UIImage(named: "thumb")
slider.setThumbImage(thumbImage, for: .normal)
slider.addTarget(self, action: #selector(sliderValueChanged(_:)), for: .valueChanged)

哦对了,文章里提到的“UISlider 教程 3”压缩包,估计图和代码都齐全了,用起来更方便。如果你正好在做 iOS 的 UI 细节优化,可以花点时间玩一玩。

zip
UISlider自定义3.zip 预估大小:19个文件
folder
UISlider教程3 文件夹
folder
UISlider教程Tests 文件夹
file
UISlider教程Tests-Info.plist 691B
file
UISlider__Tests.m 647B
folder
en.lproj 文件夹
file
InfoPlist.strings 45B
folder
UISlider教程 文件夹
file
main.m 343B
file
FKAppDelegate.m 2KB
file
FKViewController.h 221B
file
UISlider教程-Info.plist 1KB
folder
Images.xcassets 文件夹
folder
AppIcon.appiconset 文件夹
file
Contents.json 333B
folder
LaunchImage.launchimage 文件夹
file
Contents.json 442B
folder
en.lproj 文件夹
file
InfoPlist.strings 45B
file
FKAppDelegate.h 283B
file
FKViewController.m 6KB
file
UISlider教程-Prefix.pch 344B
file
.DS_Store 6KB
folder
UISlider教程.xcodeproj 文件夹
folder
project.xcworkspace 文件夹
file
contents.xcworkspacedata 169B
folder
xcuserdata 文件夹
folder
demo.xcuserdatad 文件夹
file
UserInterfaceState.xcuserstate 17KB
file
project.pbxproj 19KB
folder
xcuserdata 文件夹
folder
demo.xcuserdatad 文件夹
folder
xcschemes 文件夹
file
UISlider教程.xcscheme 4KB
file
xcschememanagement.plist 576B
zip 文件大小:40.22KB