UISlider минимумValueImageRectForBounds: и супер максимумValueImageRectForBounds возвращает пустой прямоугольник - PullRequest
3 голосов
/ 05 марта 2012

Я подкласс UISlider, чтобы уменьшить большой палец, и я хочу переопределить minimumValueImageRectForBounds и maximumValueImageRectForBounds, чтобы сделать их ширину на 2px меньше. Итак, мой код

- (CGRect)minimumValueImageRectForBounds:(CGRect)bounds
{
    CGRect stdRect = [super minimumValueImageRectForBounds:bounds];
    return CGRectMake(stdRect.origin.x + 2, stdRect.origin.y, stdRect.size.width - 2, stdRect.size.height);
}

Дело в том, что stdRect является пустым прямоугольником (0, 0, 0, 0).

Более того, если я явно установлю такой прямоугольник, как этот

- (CGRect)minimumValueImageRectForBounds:(CGRect)bounds
{
    return CGRectMake(2, 0, 40, 8);
}

Не влияет на положение изображения с минимальным значением.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 14 апреля 2015

Ха-ха, я только что понял.Я не читал достаточно внимательно.

Установка minimumValueImage - это не то же самое, что вызов setMinimumTrackImage:forState:.minimumValueImage - это изображение, которое отображается слева от ползунка и не зависит от того, что происходит в ползунке.Переопределение minimumValueImageRectForBounds изменяет размеры этого изображения (по умолчанию размер составляет 0pt в ширину), а рамка ползунков становится менее широкой и в результате смещается вправо.Насколько я понимаю, нет способа изменить прямоугольник минимального изображения TraTraImage (например, чтобы он расширялся справа от изображения большого пальца);изменить можно только изображение.

На самом деле я не нашел смысла разрешать вам устанавливать minimumValueImage.Кажется, что вы могли бы сделать то же самое, изменив размер ползунка и добавив отдельные UIImageViews сбоку ползунка.Кто знает.

Обратите внимание, что все, что я здесь сказал, относится к методам maximumValueImage и setMaximumTrackImage:forState одинаково.

0 голосов
/ 05 марта 2012

НЕ ДЕЛАЙТЕ ЭТОГО.Это старый, неправильный ответ, мимо меня.Я ненавижу этого парня.

-

Как правило, вы, вероятно, не хотите создавать подклассы стандартных элементов управления пользовательского интерфейса Apple.Возможно, вы захотите создать его и установить эти свойства самостоятельно (не уверен, что они могут быть установлены, но кажется, что они должны быть).

...