【问题标题】:UISegmentedControl custom image for segment段的 UISegmentedControl 自定义图像
【发布时间】:2020-04-19 22:19:00
【问题描述】:

有没有什么方法可以为 UISegmentedcontrol 中的选定段设置自定义图像并更改字体大小?

【问题讨论】:

    标签: ios uisegmentedcontrol


    【解决方案1】:

    UIControlEventValueChanged 事件目标中使用以下代码

    我正在添加示例代码。

    UISegmentedControl *segmentControl = [[UISegmentedControl alloc] init];
    [segmentControl addTarget:self action:@selector(segmentedControlValueChanged:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:segmentControl];
    [segmentControl release];
    segmentControl = nil;
    
    
    -(void)segmentedControlValueChanged:(UISegmentedControl *)selectedSegmentControl{
    
        int numSegments = [selectedSegmentControl.subviews count]; //getting the number of all segment sections
    
        //removing all segment section images.
        for( int i = 0; i < numSegments; i++ ) {
    
            [selectedSegmentControl setImage:nil forSegmentAtIndex:i];
    
        }       
    
        //setting image to the selected segment section.    
        [selectedSegmentControl setImage:[UIImage imageNamed:@"multiple.png"] forSegmentAtIndex:selectedSegmentControl.selectedSegmentIndex];
    
    }
    

    请写下有关字体大小更改的详细信息。您希望仅更改选定的句段文本字体大小还是更改所有句段选项卡?

    无论如何,这是更改段字体大小的常用方法。请根据您的条件使用它。您可以在下方添加评论以获得任何其他帮助。

    UIFont *myFont = [UIFont boldSystemFontOfSize:12.0f];
    NSDictionary *myAttributes = [NSDictionary dictionaryWithObject:myFont
                                                           forKey:UITextAttributeFont];
    [segmentedControl setTitleTextAttributes:myAttributes 
                                    forState:UIControlStateNormal];
    

    请注意,这仅适用于 iOS5+

    【讨论】:

    • 看起来像您自己批准了此答案,因为它不起作用。当您以这种错误的方式设置图像时,您会覆盖现有文本并将其隐藏
    【解决方案2】:

    迅速 5.x 用于更改图像:

      func addSegmented2(){
    
            let segmentedControl = UISegmentedControl(items: ["aa", "bb"])
            segmentedControl.frame = CGRect(x: 0, y: 240, width: 250, height: 30)
            self.view.addSubview(segmentedControl)
            let image = UIImage(named: "en")?.withRenderingMode(.**alwaysOriginal**)
            segmentedControl.setImage(image, forSegmentAt: 0)
    
        }
    

    【讨论】:

      猜你喜欢
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 2010-11-19
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      相关资源
      最近更新 更多