ios - UISegmentedControll 在选择段时更改高度

标签 ios objective-c

我在 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;
        }
    }
}

最佳答案

我在这个 SO 答案中找到了解决方案:Change Height of UISegmentedControl

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

关于ios - UISegmentedControll 在选择段时更改高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22987176/

相关文章:

ios - 如何使用 UISegmentedControl 与 UITableView 和分段控件和 SearchBar 不滚动

ios - 从 edX API 检索数据

ios - 所以我正在尝试制作一个快速应用程序来计算某些球队在球员投注时的乘数

ios - 尝试选择Xamarin代理时,必须接受Xcode许可证错误

ios - Swift - 修剪数组中的字符串

ios - 核心数据 在后台导入数据并回滚

ios - 谷歌分析iOS编码问题

ios - React native - Codemagic ios 构建发布失败

java - 我将如何使用 NSTask 运行 .sh 文件并获取其输出?

iphone - 来自麦克风的iPhone核心音频数据为NaN