【问题标题】:Custom UISegmentedControl Issue (Programmatically & Interface Builder)自定义 UISegmentedControl 问题(以编程方式和界面生成器)
【发布时间】:2013-01-06 14:05:10
【问题描述】:

我正在为每个段创建一个带有自定义图像的 UISegmentedControl。以编程方式,这对我有用:

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithFrame:CGRectMake(30, 0, 170, 31)];
segmentedControl.tintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"ebd-toolbar-bg"]];
[segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"eatIcon"] atIndex:0 animated:NO];
[segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"buyIcon"] atIndex:1 animated:NO];
[segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"doIcon"] atIndex:2 animated:NO];
segmentedControl.contentMode = UIViewContentModeScaleToFill;
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;

但是,片段的自定义图像并没有完全填满片段,并且背景显示了一点。问题是背景图像没有相同的颜色,所以看起来很奇怪,如下所示。您可以看到每个部分周围都有一点黑色。

我尝试使用UIViewContentModeScaleToFill,但这也不起作用。有没有办法设置段的图像大小?如果是这样,怎么做?它必须是多大?

【问题讨论】:

    标签: iphone objective-c ios xcode uisegmentedcontrol


    【解决方案1】:

    尝试使用- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets 方法。 在您的情况下,可能是:

    [segmentedControl insertSegmentWithImage:[[UIImage imageNamed:@"eatIcon"] resizableImageWithCapInsets:UIEdgeInsetsMake(0,10,0,10)] atIndex:0 animated:NO];
    

    请注意,您需要确定UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right); 函数的正确值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2012-05-17
      • 2020-03-21
      • 2013-08-20
      • 1970-01-01
      相关资源
      最近更新 更多