EntryTask

iOS开发 UISlider设置滑块形状以及 view转化成im

2021-11-02  本文已影响0人  我是卖报的小行家

今天需求是做一个播放器界面,如下图


播放器界面

播放进度条呢,一般有两种方式

    self.slider = [[UISlider alloc]init];
    self.slider.minimumTrackTintColor = [UIColor whiteColor];
    self.slider.maximumTrackTintColor = kColorRGBA(0xFFFFFF, 0.1);
    [self.view addSubview:self.slider];
    [self.slider makeConstraints:^(MASConstraintMaker *make) {
        make.height.equalTo(scaleFactorForWidth(10));
        make.width.equalTo(kScreen_width - scaleFactorForWidth(78));
        make.centerX.equalTo(self.contentImageView);
        make.top.equalTo(self.typeLabel.mas_bottom).offset(scaleFactorForWidth(35));
    }];
    self.slider.layer.cornerRadius = 2;
    self.slider.layer.masksToBounds = YES;
    
    UIView * SliderImageView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 2, 10)];
    SliderImageView.layer.cornerRadius = 1;
    SliderImageView.layer.masksToBounds = YES;
    SliderImageView.backgroundColor = [UIColor whiteColor];

    [self.slider setThumbImage: [UIImage convertViewToImage:SliderImageView] forState:UIControlStateNormal];
    [self.slider setThumbImage: [UIImage convertViewToImage:SliderImageView]  forState:UIControlStateHighlighted];

UI设计稿中UISlider轨道高度是4个像素,然后误以为整个UISlider高度就是4,这个时候就会出现因为高度不够导致滑块的样式是个错误的。

其中minimumTrackTintColor为左边轨道的颜色可以理解为已播放部分的颜色,maximumTrackTintColor为右边轨道的颜色可以理解为未播放部分的颜色 。SliderImageView是一个view,一个滑块的view,convertViewToImage是一个image的类拓展,将view转化成image

+ (UIImage *)convertViewToImage:(UIView *)view {
    UIImage *image = [[UIImage alloc]init];
    //UIGraphicsBeginImageContextWithOptions(区域大小, 是否是非透明的, 屏幕密度);
    UIGraphicsBeginImageContextWithOptions(view.frame.size, YES, [UIScreen mainScreen].scale);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

后面内容想起来多少,或者使用过程中遇到什么问题了再进行补充!

上一篇 下一篇

猜你喜欢

热点阅读