2013-03-15 31 views
6

Tôi đang cố gắng tạo UISlider có đường mỡ. Tôi đã thử this, và nó gần như hoạt động. Tuy nhiên, khi UISlider được hiển thị lần đầu tiên, thanh theo dõi là bình thường. Chỉ khi nó được một sự kiện liên lạc thì nó càng dày hơn.Làm thế nào để làm cho UISlider dày hơn khi nó được hiển thị lần đầu tiên?

Đây là mã tôi bổ sung vào lớp con của tôi về UISlider, theo khuyến cáo:

- (CGRect)trackRectForBounds:(CGRect)bounds 
{ 
    return bounds; 
} 

Tôi không hiểu cách làm việc này, vì vậy tôi không thể tìm ra lý do tại sao nó không làm việc một cách hoàn hảo. Dưới đây là các câu hỏi của tôi:

  1. Tính năng này hoạt động như thế nào?
  2. Làm cách nào để kiểm soát độ dày của đường đi?
  3. Làm cách nào để tôi có thể ảnh hưởng đến bản nhạc khi bản vẽ UISlider đầu tiên được vẽ?

Tất nhiên, câu hỏi thứ ba là quan trọng nhất, mặc dù câu hỏi thứ ba sẽ giúp tôi hiểu rõ hơn.

Một điều khác cần cân nhắc: khi nó được hiển thị đầu tiên, tôi giấu ngón tay cái:

[slider setThumbImage:[[UIImage alloc] init] forState:UIControlStateNormal]; 

Khi người dùng chạm vào thanh trượt, tôi hiển thị các ngón tay cái như thế này:

[slider setThumbImage:nil forState:UIControlStateNormal]; 

tôi đề cập đến điều này bởi vì tôi tự hỏi nếu đó là bằng cách nào đó can thiệp vào ma thuật trackRectForBounds.

Cảm ơn!

Trả lời

4

Câu hỏi 1. Từ the docs:

Nếu bạn muốn tùy chỉnh hình chữ nhật theo dõi, bạn có thể ghi đè phương pháp này và trả về một hình chữ nhật khác nhau. Hình chữ nhật được trả về là được sử dụng để chia tỷ lệ hình ảnh đường đi và ngón tay cái trong khi vẽ.

Cách triển khai mặc định của phương thức này trả về một hình chữ nhật nhỏ hơn hình chữ nhật được chuyển. Bạn chỉ cần trả lại những gì nó được thông qua, thay vì thu hẹp nó trước.

Câu hỏi 2. Return một CGRect lớn hơn hoặc nhỏ hơn, ví dụ:

return CGRectMake(0, 0, 500, 200); 

Câu hỏi 3. Tôi nghĩ rằng phương pháp duy nhất được gọi nếu bạn không đặt một hình ảnh tùy chỉnh, đó là tại sao nó không có hiệu lực cho đến khi bạn đặt hình ảnh thành nil. Nếu bạn muốn ghi đè hình ảnh, hãy thử ghi đè hình ảnh thanh trượt bằng hình ảnh thực tế theo cách bạn muốn.

+2

Đẹp - câu trả lời tuyệt vời. Không biết cách bạn biết về "triển khai mặc định" trong câu hỏi 1, nhưng điều đó giải thích mọi thứ - cảm ơn! – Bob

+0

Đáp ứng stackoverflow điển hình. – benjaminhallock

+0

@benjaminhallock Có gì sai với câu trả lời của tôi? –

Các vấn đề liên quan