iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 具有自定义颜色的UISegmentedControl:分隔符行错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
它很容易改变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]];     
}

所以它创造了这个:

非常好,然后我点击选项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];
    }
}

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。