gpt4 book ai didi

iphone - 在 UISlider 中增加一个拇指 "click area"

转载 作者:IT王子 更新时间:2023-10-29 08:01:18 26 4
gpt4 key购买 nike

我正在创建一个自定义的 UISlider,想知道如何增加缩略图的“点击区域”?下面的代码效果很好,除了拇指的“点击区域”保持不变。如果我没记错的话,我相信标准的拇指区域是 19 px?假设我想使用下面的代码将其增加到 35px,我需要采取哪些步骤?请记住,我根本不是该领域的专家。

编辑 下面的代码已更正并准备好复制意大利面!希望对您有所帮助!

ma​​in.h

#import "MyUISlider.h"

@interface main : MLUIViewController <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate, UIActionSheetDelegate, UIAlertViewDelegate, MFMailComposeViewControllerDelegate, UIGestureRecognizerDelegate, MLSearchTaskDelegate, MLDeactivateDelegate, MLReceiptDelegate>
{
..........

}

- (void)create_Custom_UISlider;

ma​​in.m

- (void)viewDidLoad
{

[self create_Custom_UISlider];
[self.view addSubview: customSlider];

}

- (void)create_Custom_UISlider
{
CGRect frame = CGRectMake(20.0, 320.0, 280, 0.0);


customSlider = [[MyUISlider alloc] initWithFrame:frame];

[customSlider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
// in case the parent view draws with a custom color or gradient, use a transparent color

customSlider.backgroundColor = [UIColor clearColor];

UIImage *stetchLeftTrack = [[UIImage imageNamed:@"blue_slider08.png"]
stretchableImageWithLeftCapWidth: 10.0 topCapHeight:0.0];
UIImage *stetchRightTrack = [[UIImage imageNamed:@"blue_slider08.png"]
stretchableImageWithLeftCapWidth: 260.0 topCapHeight:0.0];


[customSlider setThumbImage: [UIImage imageNamed:@"slider_button00"] forState:UIControlStateNormal];
[customSlider setMinimumTrackImage:stetchLeftTrack forState:UIControlStateNormal];
[customSlider setMaximumTrackImage:stetchRightTrack forState:UIControlStateNormal];


customSlider.minimumValue = 0.0;
customSlider.maximumValue = 1.0;
customSlider.continuous = NO;
customSlider.value = 0.00;

}

-(void) sliderAction: (UISlider *) sender{

if(sender.value !=1.0){
[sender setValue: 0.00 animated: YES];
}
else{
[sender setValue 0.00 animated: YES];
// add some code here depending on what you want to do!
}
}

编辑(尝试使用下面的代码进行子类化)

MyUISlider.h

#import <UIKit/UIKit.h>

@interface MyUISlider : UISlider {

}

@end

MyUISlider.m

#import "MyUISlider.h"

@implementation MyUISlider



- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value
{


return CGRectInset ([super thumbRectForBounds:bounds trackRect:rect value:value], 10 , 10);

}


@end

最佳答案

您必须在自定义子类覆盖 thumbRectForBounds:trackRect:value:(而不是调用像在代码中那样处理自己的方法,除了返回一个您甚至懒得检索的值外什么都不做。

thumbRectForBounds:trackRect:value: 不是设置 tumb rect 的方法,而是获取 的方法。 slider 将在内部调用此 thumbRectForBounds:trackRect:value: 方法来知道在哪里绘制拇指图像,因此您需要重写它(如文档中所述)以返回 CGRect 你想要的(这样它就会是你想要的 35x35px)。

关于iphone - 在 UISlider 中增加一个拇指 "click area",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18177398/

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