自定义UI段控制器问题

时间:2013-06-26 14:20:45

标签: ios ios5 ios6 uisegmentedcontrol uiappearance

我正在使用segemntController,

我正在为段的正常状态设置不同的不同图像,下面是我的代码

 (void)viewdidLoad
    {

NSArray *imageArray = [NSArray arrayWithObjects: [UIImage imageNamed:@"image1"],[UIImage imageNamed:@"image2"],[UIImage imageNamed:@"image3"],nil];

    m_segmentController = [[UISegmentedControl alloc]initWithItems:imageArray];



    m_segmentController.frame = CGRectMake(50, 10, 212, 30);
        m_segmentController.segmentedControlStyle = UISegmentedControlStyleBar;
            m_segmentController.selectedSegmentIndex = 0;

       [m_segmentController setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
        [m_segmentController addTarget:self action:@selector(segmentSelected:)forControlEvents:UIControlEventValueChanged];

     [self.navigationController.navigationBar addSubview:m_segmentController];
    }




    - (IBAction)segmentSelected:(id)sender
    {
        UISegmentedControl *segmentedControl = (UISegmentedControl *)sender;
        NSInteger selectedSegment = segmentedControl.selectedSegmentIndex;

        if(selectedSegment == 0)
        {
             [m_segmentController setImage:[UIImage imageNamed:@"image1.png"] forSegmentAtIndex:0];
         }
         else  
          {
             [m_segmentController setImage:[UIImage imageNamed:@"image2png"] forSegmentAtIndex:1];        
          }  


        }

因此,当我启动我的应用程序时,segmentController看起来就是这样

enter image description here

但是当我选择任何片段时,所选图像不会填满整个片段,看起来像这样

enter image description here

如何解决这个问题,我出错了

此致 兰吉特

1 个答案:

答案 0 :(得分:0)

您可以使用idevrecipes.com/2010/12/11/custom-segmented-controls/

此链接有一些最佳自定义UISegmentControl

修改

对于您的问题,您必须使用自定义段控件。目前,您可以将图像设置为细分而非背景图像。

  

如果要使用默认的UISegment控件,则必须使用特定细分的大小制作精确尺寸的图像。然后你可以   通过设置细分的ContentOffSets来调整图片。