开发者社区> 余书懿> 正文

UISegmentedControl

简介: 1:在iOS 5开始,新增的API可以直接定制个性化的 UISegmentedControl ,方式如下: 首先要知道,它的高度只能是:44.而且还改变不了,那么开发者需要告诉设计师提供的图片资源高度 需要 44高度,高清就是88.
+关注继续查看

1:在iOS 5开始,新增的API可以直接定制个性化的 UISegmentedControl ,方式如下:

首先要知道,它的高度只能是:44.而且还改变不了,那么开发者需要告诉设计师提供的图片资源高度 需要 44高度,高清就是88.

另外设计师提供的44像素中的顶部和底部不要包含暗淡的像素存在,否则,中间的线条就会被迫突显出来,如下图:



2:利用iOS5 为 UISegmentedControl 设置按钮里面的字体颜色大小等

[self setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor Help_colorWithRGB:@[@210.0,@210.0,@210.0] alpha:1], UITextAttributeTextColor,
[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8],UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, -1)],UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"Arial-Bold" size:0.0],UITextAttributeFont,nil]
forState:UIControlStateNormal];

注:可以设置以下四种值:

UITextAttributeFont :字体格式

UITextAttributeTextColor:字体颜色

UITextAttributeTextShadowColor:字体阴影颜色

UITextAttributeTextShadowOffset:字体阴影偏移量


3:记录 UISegmentedControl 分段的数量

 NSLog(@"%d",self.numberOfSegments);

4:通过遍历子视图的方式获取 分段的每一个View 


[self.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"%@",NSStringFromClass([obj class]));
        [obj setTag:idx + 5];
}];

注:再循环的时候 为每一个View  添加tag 值,那么接下来就可以通过标记来取到指定的View

分段控件在遍历所有子视图的时候是倒着来的,所以,想要按照正常思路取到指定的View需要如下写代码:

-(UIView *)Parent_segmentViewWithIndex:(NSInteger)index
{
    if (index > self.numberOfSegments -1) {
        return nil;
    }
    return [self viewWithTag:self.numberOfSegments - 1 - index + 5];
}

上面代码中的 5 只是为了对应 设置时的 5. 没什么实际用处, 说明一点就是:Tag值 不要从 0 开始 就行了.

还有就是 iOS 5.0 的时候 分段控件内部视图的每一个View的大小  只有在ViewDidAppear 调用时,才计算出了 具体大小.

而iOS 6.0以后 在ViewDidLoad时 就可以直接获取了.



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
+关注
余书懿
喜欢苹果,痴情技术! 专注于移动互联网,做出好产品改变世界^^! My Github https://github.com/yushuyi
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载