2011-11-04 46 views
11

Tôi đang tùy chỉnh UISlider. Tôi có thể đặt hình thu nhỏ tùy chỉnh cao hơn ngón tay cái thông thường nhưng tôi không thể làm cho bản nhạc cao hơn khi đặt hình ảnh bản nhạc tối thiểu cao hơn nhưng chiều cao bản nhạc vẫn giữ nguyên. Nó nên có thể như trong iPod/Âm nhạc App trên iPad thanh trượt âm lượng cũng cao như thanh trượt thông thường như bạn có thể xem tại đây:Tùy chỉnh UISlider (chiều cao hình ảnh theo dõi)

http://blog.cocoia.com/wp-content/uploads/2010/01/Lol-wut.png

Trả lời

2

sử dụng phương pháp tiếp theo setThumbImage, setMinimumTrackImage , setMaximumTrackImage

[self setThumbImage:[UIImage imageNamed:@"switchThumb.png"] forState:UIControlStateNormal]; 
    [self setMinimumTrackImage:[UIImage imageNamed:@"switchBlueBg.png"] forState:UIControlStateNormal]; 
    [self setMaximumTrackImage:[UIImage imageNamed:@"switchOffPlain.png"] forState:UIControlStateNormal]; 

và tạo lớp con như

này
- (id) initWithFrame: (CGRect)rect{ 
    if ((self=[super initWithFrame:CGRectMake(rect.origin.x,rect.origin.y,90,27)])){ 
     [self awakeFromNib]; 
    } 
    return self; 
} 
+0

này không làm việc – user997128

+0

lạ, có lẽ tôi không hiểu những gì bạn muốn? – SAKrisT

+0

Một lần nữa, không hoạt động ở đây. Tôi đoán mã được cung cấp chỉ là iOS5? (Tôi đang sử dụng iOS4 và có một vài bit của UISlider chỉ là iOS5) – Adam

23

Bạn cần phải phân lớp thanh trượt và ghi đè lên các phương pháp trackRectForBounds:, như thế này:

- (CGRect)trackRectForBounds:(CGRect)bounds 
{ 
    return bounds; 
} 
1
//use this code 

UIImage *volumeLeftTrackImage = [[UIImage imageNamed: @"video_payer_scroll_selection.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0]; 
     UIImage *volumeRightTrackImage= [[UIImage imageNamed: @"video_bar_bg.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0]; 
     [volumeslider setMinimumTrackImage: volumeLeftTrackImage forState: UIControlStateNormal]; 
     [volumeslider setMaximumTrackImage: volumeRightTrackImage forState: UIControlStateNormal]; 
     [volumeslider setThumbImage:[UIImage imageNamed:@"sound_bar_btn.png"] forState:UIControlStateNormal]; 
     [tempview addSubview:volumeslider]; 
2

Đối với những người muốn thấy một số mã làm việc để thay đổi kích thước theo dõi.

class CustomUISlider : UISlider 
{   
    override func trackRectForBounds(bounds: CGRect) -> CGRect { 
     //keeps original origin and width, changes height, you get the idea 
     let customBounds = CGRect(origin: bounds.origin, size: CGSize(width: bounds.size.width, height: 5.0)) 
     super.trackRectForBounds(customBounds) 
     return customBounds 
    } 

    //while we are here, why not change the image here as well? (bonus material) 
    override func awakeFromNib() { 
     self.setThumbImage(UIImage(named: "customThumb"), forState: .Normal) 
     super.awakeFromNib() 
    } 
} 

Chỉ có điều trái đang thay đổi lớp bên trong kịch bản:

storyboardstuff

Bạn có thể tiếp tục sử dụng hành động seekbar của bạn và ổ cắm cho các loại đối tượng UISlider, trừ khi bạn muốn thêm một số tùy chỉnh hơn công cụ vào thanh trượt của bạn.

5

Giải pháp đơn giản nhất để Swift:

class TBSlider: UISlider { 

    override func trackRectForBounds(bounds: CGRect) -> CGRect { 
     return CGRectMake(0, 0, bounds.size.width, 4) 
    } 
} 
Các vấn đề liên quan