Ios UISegmentedControll在选定线段时更改高度

Ios UISegmentedControll在选定线段时更改高度,ios,objective-c,Ios,Objective C,我已经在Storyboard中使用常量设置了UISegmentedControl的高度。当我运行应用程序时,它看起来很好,我希望它看起来如何。但是,只要我选择一个段(任何人),UiSegmentedControl就会将其高度更改为默认高度。如果我再次选择当前索引几次,它将返回到我设置的高度 有人能告诉我这是怎么回事吗 谢谢大家! 编辑一些代码: 此方法是从viewDidLoad -(void)setupSegmented { self.segmentedControl.tintC

我已经在Storyboard中使用常量设置了UISegmentedControl的高度。当我运行应用程序时,它看起来很好,我希望它看起来如何。但是,只要我选择一个段(任何人),UiSegmentedControl就会将其高度更改为默认高度。如果我再次选择当前索引几次,它将返回到我设置的高度

有人能告诉我这是怎么回事吗

谢谢大家!

编辑一些代码:

此方法是从
viewDidLoad

    -(void)setupSegmented
{
    self.segmentedControl.tintColor = [UIColor clearColor];

    if ([UIImage instancesRespondToSelector:@selector(imageWithRenderingMode:)]) {

        /* For non Selected Segments */
            self.allInactive = [[UIImage imageNamed:@"Segment All"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
            self.auctionInactive = [[UIImage imageNamed:@"Segment Auction"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
            self.buyNowInactive = [[UIImage imageNamed:@"Segment Buy Now"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
            self.classifiedInactive = [[UIImage imageNamed:@"Segment Classified"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

        /*For selected Segments */
            self.allActive = [[UIImage imageNamed:@"Segment All Active"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
            self.auctionActive = [[UIImage imageNamed:@"Segment Auction Active"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
            self.buyNowActive = [[UIImage imageNamed:@"Segment Buy Now Active"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
            self.classifiedActive = [[UIImage imageNamed:@"Segment Classified Active"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    }

    [self.segmentedControl setImage:self.allInactive forSegmentAtIndex:0];
    [self.segmentedControl setImage:self.auctionInactive forSegmentAtIndex:1];
    [self.segmentedControl setImage:self.buyNowInactive forSegmentAtIndex:2];
    [self.segmentedControl setImage:self.classifiedInactive forSegmentAtIndex:3];

}
因此,当我点击一个段时,会调用方法:

    - (IBAction)segmentedControlSelected:(UISegmentedControl *)sender {

    switch (sender.selectedSegmentIndex){

    case 0:
        {
            self.tradeType = @"UNSPECIFIED";
            [self.segmentedControl setImage:self.allActive forSegmentAtIndex:sender.selectedSegmentIndex];
            [self.segmentedControl setImage:self.auctionInactive forSegmentAtIndex:1];
            [self.segmentedControl setImage:self.buyNowInactive forSegmentAtIndex:2];
            [self.segmentedControl setImage:self.classifiedInactive forSegmentAtIndex:3];

            break;
        }
    case 1:
        {
            self.tradeType = @"ENGLISH_AUCTION";
            [self.segmentedControl setImage:self.auctionActive forSegmentAtIndex:sender.selectedSegmentIndex];
            [self.segmentedControl setImage:self.allInactive forSegmentAtIndex:0];
            [self.segmentedControl setImage:self.buyNowInactive forSegmentAtIndex:2];
            [self.segmentedControl setImage:self.classifiedInactive forSegmentAtIndex:3];

            break;
        }
    case 2:
        {
            self.tradeType = @"FIXED_PRICE";
            [self.segmentedControl setImage:self.buyNowActive forSegmentAtIndex:sender.selectedSegmentIndex];
            [self.segmentedControl setImage:self.allInactive forSegmentAtIndex:0];
            [self.segmentedControl setImage:self.auctionInactive forSegmentAtIndex:1];
            [self.segmentedControl setImage:self.classifiedInactive forSegmentAtIndex:3];

            break;
        }
    case 3:
        {
            self.tradeType = @"CLASSIFIED_CONTACT";
            [self.segmentedControl setImage:self.classifiedActive forSegmentAtIndex:sender.selectedSegmentIndex];
            [self.segmentedControl setImage:self.allInactive forSegmentAtIndex:0];
            [self.segmentedControl setImage:self.auctionInactive forSegmentAtIndex:1];
            [self.segmentedControl setImage:self.buyNowInactive forSegmentAtIndex:2];

            break;
        }
    }
}

我在这个答案中找到了解决方案:


每次点击
UISegmentedControl
时,我必须在
-(void)viewdilayoutsubviews
中强制设置新高度

UISegmentedControl是否有任何代码(实例化的,等等),或者都是SB?我唯一的代码就是设置它所选的图像。所有图像的大小都完全相同。我正在使用自动布局和iOS7 SDK。请发布与之相关的代码…添加了与此分段控件相关的唯一代码。谢谢您需要通过在segmentedControlSelected:方法中设置frame属性来强制分段控件的高度