UISlider 슬라이더 크기 및 높이 사용자 정의

2757 단어

요구 사항:


UISlider의 높이와 슬라이더 크기를 사용자 정의해야 합니다. (UISlider 슬라이더의 높이와 슬라이더 크기 시스템은 기본적으로 설정되어 있어 변경할 방법이 없습니다.)

방법:


슬라이더 크기는 슬라이더 그림을 설정할 수 있으며 그림 크기가 슬라이더로 크기가 필요합니다.슬라이더 높이에는 UISlider의 하위 클래스를 쓰고 시스템을 다시 쓰는 방법이 필요합니다.

코드:


다음 코드는 사용자 정의 슬라이더에서 고도를 고정합니다. 다시 사용하려면 고도 속성을 추가하여 완성합니다
OC 버전:
// MXSlider.h
#import 

@interface MXSlider : UISlider

@end


//  MXSlider.m
#import "MXSlider.h"

@implementation MXSlider

//   slider    ,           slider     
- (CGRect)trackRectForBounds:(CGRect)bounds
{
    bounds.size.height=6;
    self.layer.cornerRadius = 2.5;
    return bounds;
}

//          
- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value
{    
    rect.origin.x = rect.origin.x - 5 ;
    rect.size.width = rect.size.width +10;
    return CGRectInset ([super thumbRectForBounds:bounds trackRect:rect value:value], 5 , 5);
}

@end

swift 버전:
import UIKit

class CustomSlider: UISlider {
    
    var sliderHeight: CGFloat = 4.0
    
    override func minimumValueImageRect(forBounds bounds: CGRect) -> CGRect {
        return self.bounds
    }
    
    override func maximumValueImageRect(forBounds bounds: CGRect) -> CGRect {
        return self.bounds
    }
    
    //   slider    ,           slider     
    override func trackRect(forBounds bounds: CGRect) -> CGRect {
        let rect = super.trackRect(forBounds: bounds)
        layer.cornerRadius = sliderHeight/2
        return CGRect.init(x: rect.origin.x, y: (bounds.size.height-sliderHeight)/2, width: bounds.size.width, height: sliderHeight)
    }
    
    //          
    override func thumbRect(forBounds bounds: CGRect, trackRect rect: CGRect, value: Float) -> CGRect {
        return super.thumbRect(forBounds: bounds, trackRect: rect, value: value)
    }
    
}

호출:
// slider
self.playSlider = [[MXSlider alloc] initWithFrame:CGRectMake(84, ScreenHeight-SafeBottom-37-5, ScreenWidth-84-55, 5)];
self.playSlider.value = 0;
self.playSlider.thumbTintColor = [UIColor whiteColor];
//     
self.playSlider.minimumTrackTintColor = [UIColor whiteColor];
self.playSlider.maximumTrackTintColor = rgba(0, 0, 0, 0.3);
//
[self.playSlider setThumbImage:[UIImage imageNamed:@"music_btn_dot"] forState:UIControlStateNormal];
[self.playSlider setThumbImage:[UIImage imageNamed:@"music_btn_dot"] forState:UIControlStateHighlighted];
[self.playSlider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:_playSlider];

 
참고 자료:
시스템의 UISlider 높이 수정
iOS 컨트롤 - UISlider 슬라이딩 단위 정확도와 UISlider 고도 연구

좋은 웹페이지 즐겨찾기