目录 我是代码
- 字体放大
- 颜色RGBA
- 滑块
- 内容类型
- 实现效果方法
- Layout, 旋转
- CRUD
- cocoaPods
- 使用
- 问答
个人测试有限, 如果有什么问题请评论或issue我 GitHub
1. 字体放大
一开始选择的是UIButton, 改变UIFont, 效果如上, 如以上下抖动的方式增减, UILable也同样, 找不到其他方式. 最后用的是缩放, 问题是连UIButton整个控件都会缩放, 理想中效果想要只缩放里面的UILable.
出现的问题 : 不影响视觉效果, 影响可能多的自定义
UIButton 自定义的时候背景色只能设置它的容器->UIScroll
滚动的时候要取原来的x坐标,width等
2. 颜色RGBA
一开始仿的是网易新闻的APP, 黑>红, 想半天没明白, 后来对照了RGB,
黑 (R:0 G:0 B:0)
红 (R:0 G:255 B:0) 好了, 问题解决了. 之后就扩展了RGBA, 不过本人色弱, 不同值之间转换时颜色效果我是忽略了
1 2 3 4 5 6 7 8 9 10 |
自定义: YFTagItemConfigration block = ^UIButton *(UIButton *itemBtn, NSUInteger index){ if (index == 0) { // 选中状态 注意全是 UIControlStateNormal [itemBtn setTitleColor:[UIColor colorWithRed:0.4 green:0.0 blue:1.0 alpha:0.3] forState:UIControlStateNormal]; }else { // 默认状态 [itemBtn setTitleColor:[UIColor colorWithRed:1.0 green:0.0 blue:1.0 alpha:1.0] forState:UIControlStateNormal]; } itemBtn.titleLabel.font = [UIFont systemFontOfSize:15]; // 大小按缩放比例 return itemBtn; }; |
3. 滑块
扇贝APP, 有变宽度的效果. 还好开始时就想到给滑块加个容器, 好处就很明显了, 移动的时候控制容器, 滑块的宽度重写容器的setter就可以, 宽度可以自定义, 也可以根据标签串长度+自定义数值
1 2 3 4 5 6 7 |
typedef NS_ENUM(NSUInteger, YFSliderType) { YFSliderTypeNone, // 没有 YFSliderTypeTop, // 上面, 放在标签ScrollView YFSliderTypeMid, // 中间 YFSliderTypeBottom, // 下面 YFSliderTypeBottomAlone // 下面独立, 宽度和标签ScrollView一样的UIScrollView }; |
4. 内容类型
可以的UIViewController 或 UIView , 且两者嵌套
切换时需要立即刷新, 我用的是 继承或Category
如果需要重用UIViewController, 请看 Demo
1 2 3 4 5 6 7 8 9 10 |
// 获取当前屏幕显示的viewcontroller - (UIViewController *)viewController:(UIView *)view { UIResponder *responder = view; while ((responder = [responder nextResponder])) if ([responder isKindOfClass: [UIViewController class]]) return (UIViewController *)responder; // If the view controller isn't found, return nil. return nil; } |
嵌套时效果
滚动内层时直接调的是外层的UIScroll(斗鱼APP) :内层.ctScroll.scrollEnabled = NO;
默认调的是内层自己的, 只要是两个都写delegate = self;
5. 实现效果方法
- 区分左右滑, 上一个, 下一个 UIButton
- 移动点: 滚动内容里转化百分比到标签的UIScrollView.contentOffset ,
总距离: 两个UIButton.x 的间距
每个点变化: RGBA, 滑块宽度, / 总距离 得到的比例 * 缩放
6. Layout, 旋转
适配Xib: - (void)layoutSubviews
获得的frame正确
如果Xib控件之前有一个代码写的控件 - (void)awakeFromNib
中获取的frame有效, 如果全是Xib, 获取的frame就有问题, 哪怕你调用
1 2 |
[self setNeedsLayout]; [self layoutIfNeeded]; |
获取的frame也会出错, 最后只能重写代码
得到的经验
初始化只配置数据,- (void)layoutSubviews
配置frame
7. CRUD
黄易的效果, 包括改变完之后直接对比之前的数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// 调用之前, 主控制器先改变对应数据的CRUD, 以下方法会调用代理, 免得越界 /** * 增加在最后一个 * @param title 标签字符串 * @param item 内容, UIView 或 UIViewController */ - (void)addTagTitle:(NSString *)title contentItem:(id)item; // 增加在index, .com/yfGit" target="_blank">GitHub
1. 字体放大一开始选择的是UIButton, 改变UIFont, 效果如上, 如以上下抖动的方式增减, UILable也同样, 找不到其他方式. 最后用的是缩放, 问题是连UIButton整个控件都会缩放, 理想中效果想要只缩放里面的UILable.
2. 颜色RGBA一开始仿的是网易新闻的APP, 黑>红, 想半天没明白, 后来对照了RGB,
3. 滑块扇贝APP, 有变宽度的效果. 还好开始时就想到给滑块加个容器, 好处就很明显了, 移动的时候控制容器, 滑块的宽度重写容器的setter就可以, 宽度可以自定义, 也可以根据标签串长度+自定义数值
4. 内容类型可以的UIViewController 或 UIView , 且两者嵌套
5. 实现效果方法
6. Layout, 旋转适配Xib:
获取的frame也会出错, 最后只能重写代码
7. CRUD黄易的效果, 包括改变完之后直接对比之前的数据
|