значение uislider изменяется, когда я нажимаю на программно созданный uilabel

У меня есть uislider (*fontSizeSlider), который изменяет программно созданный размер текста uilabel. Когда у меня есть от 2 до 5 программно созданных меток в моем представлении с разным размером текста, я хочу, чтобы позиция UISlider была изменена на соответствующее значение (1-50 — это минимальный и максимальный размер uislider) для каждой метки при касании (touchesbegan ).

Таким образом, если размер текста label1 равен 10, размер текста label2 равен 20, а размер текста label5 равен 50 (Примечание: размер текста был изменен с помощью uislider). Когда я нажимаю (касаюсь) label1, label2 или label5, я хочу, чтобы uislider отображал соответствующие значения. (Я имею в виду, что полоса uislider должна перемещаться на 10, если выбрана метка 1, и на 20, когда выбрана метка 2, и так далее. )

Вот мой пример кода, который я попробовал на touchesbegan,

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
 touch=[touches anyObject];
 CGPoint fontSliderLocation = [touch locationInView:fontSizeSlider];
        NSLog(@"Location of x %f and Location of y %f", fontSliderLocation.x, fontSliderLocation.y);

Это не полный код, я просто поместил его здесь, чтобы иметь некоторый смысл. Используя приведенный выше код, я могу получить координаты x и y затронутой метки. Но как мне получить размер текста метки и иметь возможность изменить значение uislider, когда я нажимаю/касаюсь любой из меток.


person Vikr    schedule 03.04.2013    source источник


Ответы (2)


как мне получить размер текста метки и иметь возможность изменить значение uislider, когда я нажимаю/касаюсь любой из меток.

Вы можете получить fontsize следующим образом:

NSString *fontName=self.label.font.fontName;
CGFloat fontSize=self.label.font.pointSize;

И на этом делегате:

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event;
    UITouch *touch=[touches <object>];
    if(touch.view.tag == <your Tag>){
       slider.value=<the value you want>;
    }
    else...
 }

Редактировать. Чтобы узнать цвет, используйте:

UIColor *color=self.textField.textColor;
CGFloat r,g,b,a;
[color getRed:&r green:&g blue: &b alpha: &a];
NSLog(@"%f, %f, %f",r, g, b);
person Anoop Vaidya    schedule 03.04.2013
comment
Спасибо, получилось именно так, как я и хотел. Еще один быстрый вопрос: есть ли способ получить цвет метки и назначить его UiColorSlider? - person Vikr; 03.04.2013
comment
Я пробовал, const CGFloat *rgba = CGColorGetComponents([_label textColor].CGColor); г=ргба[0]; г=ргба[1]; //Зеленый всегда возвращает 1 b=rgba[2]; Красный и синий возвращают назначенный цвет с метки на ползунки, но зеленый всегда возвращает 1. - person Vikr; 03.04.2013
comment
Тогда у меня нет ответа, я никогда не был разработчиком iOS и не являюсь им. И в моих XCodes написано что-то вроде ios6.1 или около того... :( - person Anoop Vaidya; 03.04.2013
comment
Нп. Спасибо за ваше время в попытке помочь мне с ответом. - person Vikr; 04.04.2013
comment
могу ли я использовать ваш CGColor и т. д. в моем XCode4.6? - person Anoop Vaidya; 04.04.2013
comment
Да, ты можешь. Я имел в виду только версию для ios. - person Vikr; 05.04.2013

вы можете получить имя шрифта и размер шрифта UILable, как указано выше, а также изменить значение ползунка с помощью его метода setValue, как показано ниже...

[yourSlider setValue:yourFloatValue];
person Paras Joshi    schedule 03.04.2013