使用resizableImageWithCapInsets自定义UISegmentedControl

问题描述 投票:0回答:2

我是使用自定义背景图片自定义UISegmentedControl。代码是这样的:

UIImage *segmentSelected = [[UIImage imageNamed:@"segcontrol_sel.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)];
UIImage *segmentUnselected = [[UIImage imageNamed:@"segcontrol_uns.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)];
UIImage *segmentSelectedUnselected = [[UIImage imageNamed:@"segcontrol_sel-uns.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
UIImage *segUnselectedSelected = [[UIImage imageNamed:@"segcontrol_uns-sel.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
UIImage *segmentUnselectedUnselected = [[UIImage imageNamed:@"segcontrol_uns-uns.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];

[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected
                                           forState:UIControlStateNormal
                                         barMetrics:UIBarMetricsDefault];

[[UISegmentedControl appearance] setBackgroundImage:segmentSelected
                                           forState:UIControlStateSelected
                                         barMetrics:UIBarMetricsDefault];

[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected
                             forLeftSegmentState:UIControlStateNormal
                               rightSegmentState:UIControlStateNormal
                                      barMetrics:UIBarMetricsDefault];

[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected
                             forLeftSegmentState:UIControlStateSelected
                               rightSegmentState:UIControlStateNormal
                                      barMetrics:UIBarMetricsDefault];

[[UISegmentedControl appearance] setDividerImage:segUnselectedSelected
                             forLeftSegmentState:UIControlStateNormal
                               rightSegmentState:UIControlStateSelected
                                      barMetrics:UIBarMetricsDefault];

但是结果不是应该的。我不太确定该方法的用法:resizableImageWithCapInsets。图像已附加。

应该是这样的:“应该”“>

但实际上是这样的:“屏幕截图”“ >>

我想我使用了错误的UIEdgeInset值。背景图片的宽度为:22;高度:30分割图像的宽度为11;高度:30有什么建议吗?

我是使用自定义背景图片自定义UISegmentedControl。代码是这样的:UIImage * segmentSelected = [[UIImage imageNamed:@“ segcontrol_sel.png”] resizableImageWithCapInsets:...

ios uisegmentedcontrol
2个回答
2
投票

尝试一下

HMSSegmentControl


0
投票

我认为您应该使用更高质量的图像。

© www.soinside.com 2019 - 2024. All rights reserved.