Я создаю пользовательский UISlider и удивляюсь, как вы увеличиваете «область щелчка» большого пальца? Код ниже отлично работает, за исключением того, что «область щелчка» большого пальца остается неизменной. Если я не ошибаюсь, я считаю, что стандартная область большого пальца составляет 19 пикселей? Допустим, я хотел бы увеличить его до 35px следующим кодом ниже, какие шаги мне нужно предпринять? Имейте в виду, что я не эксперт в этой области.Увеличение большого пальца «область щелчка» в UISlider
EDITКод ниже скорректирован и готов к копированию пасты! Надеюсь, это поможет вам!
main.h
#import "MyUISlider.h"
@interface main : MLUIViewController <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate, UIActionSheetDelegate, UIAlertViewDelegate, MFMailComposeViewControllerDelegate, UIGestureRecognizerDelegate, MLSearchTaskDelegate, MLDeactivateDelegate, MLReceiptDelegate>
{
..........
}
- (void)create_Custom_UISlider;
main.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!
}
}
EDIT (пытаясь подкласс с кодом ниже)
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
См. Мой рабочий пример по тому же вопросу: http://stackoverflow.com/a/26316371/258931 – Thomas
Возможный дубликат [Пользовательский UISlider - Увеличить размер «горячей точки»] (http://stackoverflow.com/ вопросы/13196263/custom-uislider-увеличить-hot-spot-size) –