關于UISlider的簡介就不多說了主要記錄一下它的各種屬性用法:
-(void)setProgressView{
UIView *backView = [[UIView alloc] initWithFrame:CGRectMake(20, 200, 300, 10)];
backView.backgroundColor = [UIColor clearColor];
[self.view addSubview:backView];
self.backView = backView;
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 300, 10)];
UIImage *image5 = [UIImage imageNamed:@"player_slider_playback_thumb"];
//設置slider圓形滾動的顏色
slider.thumbTintColor = [UIColor purpleColor];
//設置slider右邊的顏色
slider.maximumTrackTintColor = [UIColor redColor];
//設置slider左邊的顏色
slider.minimumTrackTintColor = [UIColor orangeColor];
// 設置slider圓形滾動部分的背景圖片
[slider setThumbImage:[self OriginImage:image5 scaleToSize:CGSizeMake(20, 20)] forState:UIControlStateNormal];
//設置slider右邊部分的背景圖片
[slider setMaximumTrackImage:[UIImage imageNamed:@"63acf19b71ca34fa00d16a1761ee62e4"] forState:UIControlStateNormal];
//設置slider左邊部分的背景圖片
[slider setMinimumTrackImage:[UIImage imageNamed:@"6b81ebdb865c1cb4122a6237d6964865"] forState:UIControlStateNormal];
[slider addTarget:self action:@selector(slickChange:) forControlEvents:UIControlEventValueChanged];
//默認為yes,設置為NO的時候,滑動結束的時候slickChange方法才會被調用。
slider.continuous = NO;
[backView addSubview:slider];
//添加手勢,用于點擊slider的時候滑動到指定位置
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
[slider addGestureRecognizer:tap];
self.slider = slider;
NSLog(@"%f",slider.currentThumbImage.size.width);
UIImageView *button = [[UIImageView alloc] initWithFrame:CGRectMake(60, 0, 10, 10)];
button.backgroundColor = [UIColor clearColor];
button.image = [UIImage imageNamed:@"player_slider_playback_thumb"];
[self.backView addSubview:button];
self.button = button;
UIView *lineview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 0.5)];
lineview.backgroundColor = [UIColor purpleColor];
lineview.center = backView.center;
[backView addSubview:lineview];
UIButton *playButton = [[UIButton alloc] initWithFrame:CGRectMake(20, 300, 100, 40)];
playButton.backgroundColor = [UIColor redColor];
[playButton addTarget:self action:@selector(playClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:playButton];
}
手勢方法:
-(void)tap:(UIGestureRecognizer*)tap{
//當前手勢點擊點在slider上的位置
CGPoint currentPoint = [tap locationInView:self.slider];
//計算出需要滑動的比例值
float value = currentPoint.x/self.backView.bounds.size.width;
self.slider.value = value;
}
滑動事件響應方法:
-(void)slickChange:(UISlider*)slider{
//計算出指定路徑上的button在slider的范圍
CGFloat min = 42/300.0;
CGFloat max = 75/300.0;
//slider滑動到這個區間時將slider設置到最前面
if (min<slider.value&& slider.value<max) {
[self.backView bringSubviewToFront:self.slider];
}else{
[self.backView sendSubviewToBack:self.slider];
}
}
改變slider上圓形滑動塊大小的一種辦法(UITableviewcell上自帶imageview大小也可以使用這個代碼)
-(UIImage*) OriginImage:(UIImage*)image scaleToSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);//size為CGSize類型,即你所需要的圖片尺寸
[image drawInRect:CGRectMake(0,0, size.width, size.height)];
UIImage* scaledImage =UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
滑動到第一個小的分區上的圖片:
屏幕快照 2017-05-31 上午9.50.06.png
滑過以后的圖片:
屏幕快照 2017-05-31 上午9.49.51.png