UISlider自定义滑块大小

<p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(0, 177, 255);"><pre name="code" class="objc">- (void)viewDidLoad  {
<span style="font-family: Menlo;">   UISlider *sliderProgress = [[UISlider alloc]initWithFrame:CGRectMake(20, 100, 200, 50)];</span>
    sliderProgress.value = 0.5;
    [self.view addSubview:sliderProgress];
    
    UIImage *image = [self OriginImage:[UIImage imageNamed:@"white.png"] scaleToSize:CGSizeMake(12, 12)];
    [sliderProgress setThumbImage:image forState:UIControlStateNormal];
    [sliderProgress setThumbImage:image forState:UIControlStateHighlighted];
 }

//自定义滑块的大小    通过此方法可以更改滑块的任意大小和形状
-(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;
    
}
<img src="webkit-fake-url://435b53da-7b6d-42cc-9d3b-f5c22a5033f7/image.tiff" alt="" />



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以通过使用 AVPlayer 和 AVPlayerLayer 类来实现视频监控进度条和视频回放页面时间轴自定义滑块。下面是一个示例代码片段,演示如何实现: 1.创建一个 AVPlayerLayer,将其添加到您的视图层次结构中,并将其绑定到 AVPlayer。 ``` // 创建 AVPlayer AVPlayer *player = [AVPlayer playerWithURL:[NSURL URLWithString:@"yourVideoURL"]]; [player play]; // 创建 AVPlayerLayer AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; playerLayer.frame = self.view.bounds; [self.view.layer addSublayer:playerLayer]; ``` 2.创建一个 UISlider,并在滑动滑块时更新 AVPlayer 的当前时间。 ``` // 创建 UISlider UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(50, 400, 300, 20)]; [slider addTarget:self action:@selector(handleSlider:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview:slider]; // 滑动滑块处理程序 - (void)handleSlider:(UISlider *)slider { CMTime videoDuration = player.currentItem.duration; double videoDurationSeconds = CMTimeGetSeconds(videoDuration); double newTime = videoDurationSeconds * slider.value; CMTime time = CMTimeMakeWithSeconds(newTime, player.currentTime.timescale); [player seekToTime:time]; } ``` 3.创建一个自定义滑块,并在拖动滑块时更新视频回放页面的时间轴。 ``` // 创建自定义滑块 UIImageView *thumbImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)]; thumbImageView.image = [UIImage imageNamed:@"yourImage"]; [slider setThumbImage:[UIImage new] forState:UIControlStateNormal]; [slider addSubview:thumbImageView]; // 拖动滑块处理程序 - (void)handlePan:(UIPanGestureRecognizer *)gesture { if (gesture.state == UIGestureRecognizerStateChanged) { CGPoint translation = [gesture translationInView:self.view]; CGPoint newCenter = CGPointMake(slider.thumbCenter.x + translation.x, slider.thumbCenter.y); if (newCenter.x > slider.frame.size.width) { newCenter.x = slider.frame.size.width; } else if (newCenter.x < 0) { newCenter.x = 0; } slider.thumbCenter = newCenter; CMTime videoDuration = player.currentItem.duration; double videoDurationSeconds = CMTimeGetSeconds(videoDuration); double newTime = videoDurationSeconds * (newCenter.x / slider.frame.size.width); CMTime time = CMTimeMakeWithSeconds(newTime, player.currentTime.timescale); [player seekToTime:time]; } } ``` 希望这可以帮助到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值