gpt4 book ai didi

ios - 使用 resizableImageWithCapInsets 自定义 UISegmentedControl

转载 作者:行者123 更新时间:2023-11-28 22:35:17 27 4
gpt4 key购买 nike

我正在使用自定义背景图像自定义 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。图片已附上。

应该是这样的: should be

但实际上是这样的: screen shot

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

最佳答案

试试这个

HMSSegmentControl

仅使用这两个文件及其选中和取消选中的图像

HMSegmentedControl.h

HMSegmentedControl.m

.h文件

    #import "HMSegmentedControl.h"
HMSegmentedControl *segmentedControl;

.m文件

viewDidLoad 代码

    segmentedControl = [[HMSegmentedControl alloc] initWithSectionImages:@[[UIImage imageNamed:@"1"], [UIImage imageNamed:@"2"], [UIImage imageNamed:@"3"]] sectionSelectedImages:@[[UIImage imageNamed:@"1-selected"], [UIImage imageNamed:@"2-selected"], [UIImage imageNamed:@"3-selected"]]]; // it create size as per your segment total image
[segmentedControl setSelectionIndicatorHeight:4.0f];
[segmentedControl setFrame:CGRectMake(0, 45, 320, 45)];
[segmentedControl setSegmentEdgeInset:UIEdgeInsetsMake(0, 0, 0, 0)];
[segmentedControl addTarget:self action:@selector(segmentedControlChangedValue:) forControlEvents:UIControlEventValueChanged];
[segmentedControl setBackgroundColor:[UIColor blueColor]];
[segmentedControl setSelectionLocation:HMSegmentedControlSelectionLocationDown];
[segmentedControl setSelectionStyle:HMSegmentedControlSelectionStyleTextWidthStrip];
[self.view addSubview:segmentedControl];



- (void)segmentedControlChangedValue:(HMSegmentedControl *)segmentedControl1 {
if (segmentedControl1.selectedSegmentIndex==0) {
}
else if (segmentedControl1.selectedSegmentIndex==1) {
}
else if(segmentedControl1.selectedSegmentIndex==2) {
}
}

关于ios - 使用 resizableImageWithCapInsets 自定义 UISegmentedControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16249277/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com