objective-c – 具有自定义颜色的UISegmentedControl:分隔符行错误

objective-c – 具有自定义颜色的UISegmentedControl:分隔符行错误,第1张

概述它很容易改变UISegmentedControl的颜色.我找到了各种解决方案,如 this, this site和最好的 this solution.但没有一个是我想要的. 我尝试创建一个简单的东西,它很容易,这是我的代码:(我使用的是iOS 4.2,而不是5.0和xcode 4.0.2) id segment[3];UISegmentedControl *segmentedControl; 它很容易改变UISegmentedControl的颜色.我找到了各种解决方案,如 this,this site和最好的 this solution.但没有一个是我想要的.

我尝试创建一个简单的东西,它很容易,这是我的代码:(我使用的是iOS 4.2,而不是5.0和xcode 4.0.2)

ID segment[3];UISegmentedControl *segmentedControl;   - (ID)init{    NSArray *itens = [NSArray arrayWithObjects: @"Option 1",@"Option 2",@"Option 3",nil];        segmentedControl = [[UISegmentedControl alloc] initWithItems:itens];    [segmentedControl setFrame:CGRectMake(0,500,30)];    [segmentedControl setSegmentedControlStyle:UISegmentedControlStylebar];    [segmentedControl addTarget:self                     action:@selector(segmentedControl:)           forControlEvents:UIControlEventAllEvents];    switch (type) {        case type1: [segmentedControl setSelectedSegmentIndex:0]; break;        case type2: [segmentedControl setSelectedSegmentIndex:1]; break;                case type3: [segmentedControl setSelectedSegmentIndex:2]; break;            }    for (int i=0; i<3; i++) {        //The most important trick to work,have to retain the subvIEws        segment[i] = [[[segmentedControl subvIEws] objectAtIndex:i] retain];    }    [self changecolor];    [self addSubvIEw:segmentedControl];    return self;}  - (voID)segmentedControl:(ID)sender {    //do some thing    [self changecolor];}- (voID)changecolor{     for (int i=0; i<3; i++) {        [segment[i] setTintcolor:[UIcolor lightGraycolor]];    }    int select = segmentedControl.selectedSegmentIndex;    [segment[select] setTintcolor:[UIcolor bluecolor]];     }@H_404_14@  

所以它创造了这个:

非常好,然后我点击选项2

哇,这是我想要的,所以点击选项3

现在问题是,选项1和选项2之间的这条愚蠢的蓝线(红色标记)如果我再次点击选项1,我会:

比蓝线再次出现.这意味着旧点击片段的每个左侧(但不包括第一个片段)将具有此蓝线.如果我从右到左,它就不会发生.

我不知道如何解决这个问题.如何访问此行并更改颜色?或者我将不得不使用其他代码.也许他们会遇到同样的问题……

解决方法 我认为有更简单的解决方案.
只需清理指针..

for (int i=0; i<[self.segmentedControll.subvIEws count]; i++) {    [[self.segmentedControll.subvIEws objectAtIndex:i] setTintcolor:nil];    if (![[self.segmentedControll.subvIEws objectAtIndex:i]isSelected])     {           UIcolor *tintcolor=[UIcolor blackcolor];        [[self.segmentedControll.subvIEws objectAtIndex:i] setTintcolor:tintcolor];    }     else     {        UIcolor *tintcolor=[UIcolor bluecolor];        [[self.segmentedControll.subvIEws objectAtIndex:i] setTintcolor:tintcolor];    }}@H_404_14@                            	          总结       

以上是内存溢出为你收集整理的objective-c – 具有自定义颜色的UISegmentedControl:分隔符错误全部内容,希望文章能够帮你解决objective-c – 具有自定义颜色的UISegmentedControl:分隔符行错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1080917.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存