Как я могу заставить UIButton следовать за изменением размера изображения stati c? - PullRequest
0 голосов
/ 02 августа 2020

У меня есть статическое c изображение для моего ThermostatSettingViewController, и мне назначены позиции UIButton в построителе интерфейса, чтобы они соответствовали визуальному макету на изображении png. Мне нужно установить флаг Do not resize на IB, потому что, если изображение масштабируется, чтобы соответствовать UIView большего экрана, UIButtons больше не находятся в нужных местах. Поскольку для кнопок UIButtons установлено значение «Без имени» и просто невидимая кнопка, вы не можете их найти.

Я пробовал нормальное позиционирование XIB, ограничения, почти все, что я мог придумать, безуспешно.

Изменить:

Если никто не нашел способа, единственный способ, который я могу придумать, - это использовать изображение stati c и определить центр, по количеству точек, где каждая кнопка и метка должна размещаться динамически. Затем узнайте текущий размер UIView в пунктах и ​​вычислите (на самом деле просто умножение) новое значение X, Y для центра каждой кнопки.

Беда, конечно, состоит в том, чтобы тщательно подсчитать каждый пиксель / наведите указатель мыши на базовое изображение и определите базовое распределение X, Y для каждой метки или кнопки.

Если это так, я готов дать ему go, но с двумя другими вопросами:

  1. Есть ли у кого-нибудь утилита, которая может выводить координаты X, Y из моего базового изображения. Что-то вроде того, где находится курсор. Затем я могу сохранить каждый из них в словаре и найти положение соответствующей метки / кнопки.

  2. - параметр .bounds, достаточный, чтобы сказать мне, насколько велико представление X, Y для изображение в точках? Итак, есть ли у кого-нибудь код, который может динамически позиционировать элемент управления (например, ограничения) с учетом координат X, Y в текущем представлении?

Любая помощь будет принята с благодарностью.

Есть ли у кого-нибудь метод, который мог бы вычислить относительное положение кнопок на основе возвращенного размера ImageView size?

Вот пример кода в Objective- C.

- (IBAction) CoolDownButtonPressed:(id)sender {
    int number = 0;
    number = [self convertStringtoInteger:_CoolSetting.text];
    number--;
    NSString *mystring = [self convertIntegertoString:number];
    if (![_HoldMode.text isEqualToString:@"Holding"]) {
        cmdString = [NSString stringWithFormat:@"temp set cool %@", mystring];
        _CoolSetting.textColor = [UIColor systemBlueColor];
    } else {
        _CoolSetting.textColor = [UIColor systemOrangeColor];
        [General wobbleField:_CoolSetting];
    }
    _CoolSetting.text = mystring;
}

- (IBAction) statModeOffButtonPressed:(id)sender {
    NSString *command = @"temp set fan auto";
    [self sendCommand:command];
}

- (IBAction) statModeAutoButtonPressed:(id)sender {
    NSString *command = @"temp set mode auto";
    [self sendCommand:command];
}

- (IBAction) statModeCoolButtonPressed:(id)sender {
    NSString *command = @"temp set mode cool";
    [self sendCommand:command];
}

- (IBAction) statModeHeatButtonPressed:(id)sender {
    NSString *command = @"temp set mode heat";
    [self sendCommand:command];
}

- (IBAction) fanModeAutoOnButtonPressed:(id)sender {
    NSString *command = @"temp set fan on";
    [self sendCommand:command];
}

- (IBAction) fanModeAutoAutoButtonPressed:(id)sender {
    NSString *command = @"temp set fan auto";
    [self sendCommand:command];
}

- (IBAction) holdModeOnButtonPressed:(id)sender {
    NSString *command = @"temp set hold on";
    [self sendCommand:command];
}

- (IBAction) holdModeOffButtonPressed:(id)sender {
    NSString *command = @"temp set hold off";
    [self sendCommand:command];
}

А вот изображение, которое я показываю. Проблема в том, что, скажем, на iPad изображение отображается в верхнем левом углу, так как я не могу изменить его размер.

Изображение настройки термостата

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...