AXStateButton
A simple UIButton subclass that allows for extensive button state customization.
Install / Use
/learn @alexhillc/AXStateButtonREADME
AXStateButton
AXStateButton is a simple UIButton subclass that offers state-based button customization akin to that of Apple's. The idea is nothing fancy, but can be used as the building blocks to create something a bit more complex. All it takes to get started is:
AXStateButton *button = [AXStateButton button];
// some arbitrary customizations
[button setCornerRadius:0.0f forState:UIControlStateNormal];
[button setCornerRadius:6.0f forState:UIControlStateSelected];
[button setCornerRadius:6.0f forState:UIControlStateHighlighted | UIControlStateSelected];
[button setTransformRotationZ:0 forState:UIControlStateNormal];
[button setTransformRotationZ:M_PI_4 forState:UIControlStateSelected];
// customize the rest of your button...
[self.view addSubview:button];
"Well, what properties are state-configurable?"
- Tint color
- Background color
- Alpha
- Title alpha
- Image alpha
- Corner radius
- Border color
- Border width
- Transform rotation (x, y, z)
- Transform scale
- Shadow color
- Shadow opacity
- Shadow offset
- Shadow radius
- Shadow path
Todo?
- Custom view for state
Other useful things
You can also adjust the animation duration of your state transitions:
button.controlStateAnimationDuration = 0.1;
On top of that, you can change the timing function used when animating control state changes:
button.controlStateAnimationTimingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
Or, you can disable animations all together:
button.animateControlStateChanges = NO;
For convenience, it's possible to access your set values:
CGFloat cornerRadius = [button cornerRadiusForState:UIControlStateHighlighted | UIControlStateSelected];
// great success!
Contributions
If you see a bug, you are welcome to open a Github issue and I will attempt to get to it as soon as I can. Of course, you are also welcome to fork the repo and create a pull request with your changes. I'd be happy to look them over!
Related Skills
node-connect
345.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
106.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
