Учитывая следующее изображение:позиционирование UILabel внутри UIView
три этикетки: «СЕГОДНЯ, СРЕДНЯЯ, на прошлой неделе» позиционируются динамически в моей ViewController. Это становится проблемой, когда приложение развертывается на других устройствах (например, iPhone 6 Plus), где они неправильно расположены.
Я знаю, что могу использовать AutoLayout, однако я бы хотел правильно расположить их, используя библиотеку, которая используется для создания 3-х активных баров.
Библиотека, которую я использую: CHCircleGauge.
Я попытался добавить следующее в эту библиотеку, но не знал точно, какие ограничения использовать для размещения их там, где вы видите их на этом изображении.
Это код, я использую до сих пор, что является same code, который используется для позиционирования этикетки «6hrs» по центру по горизонтали и по вертикали.
NSDictionary *valueLabelDictionary = @{@"valueText" : self.valueTextLabel};
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[valueText]|" options:0 metrics:nil views:valueLabelDictionary]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[valueText]|" options:0 metrics:nil views:valueLabelDictionary]];
Я просто только добавил следующее, по крайней мере, быть в состоянии играть с динамическими ограничениями и может успешно позиционировать метки на том же месте. Но проблема в том, что я не совсем уверен, как позиционировать их как изображение выше.
NSDictionary *titleLabelDictionary = @{@"titleText" : self.titleTextLabel};
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[titleText]|" options:0 metrics:nil views:titleLabelDictionary]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[titleText]|" options:0 metrics:nil views:titleLabelDictionary]];
Любая помощь будет принята с благодарностью. Я все еще пытаюсь понять, как работают AutoLayout и ограничения.
UPDATE:
Для того, чтобы отобразить три кольца, которые я использую следующее:
var barView1 = CHCircleGaugeView(frame: CGRectMake(0, 0, 245, 245))
barView1.center = CGPointMake(self.gaugeView.frame.size.width/2, self.gaugeView.frame.size.height/2)
barView1.gaugeWidth = 16
barView1.gaugeTintColor = UIColor(red: 255/255, green: 202/255, blue: 76/255, alpha: 1)
barView1.trackWidth = barView1.gaugeWidth
barView1.trackTintColor = UIColor(red: 255/255, green: 202/255, blue: 76/255, alpha: 0.1)
self.gaugeView.addSubview(barView1)
barView1.setValue(0.10, animated: true)
Тогда я просто добавить еще два, которые имеют меньший размер (с центром в gaugeView
), чтобы поместиться внутри большее кольцо.
UPDATE 2:
Я закончил с использованием следующих с некоторыми constant
дополнения:
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.titleTextLabel
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:-9.0]];
[self addConstraint:[NSLayoutConstraint constraintWithItem:self.titleTextLabel
attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:self
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:-14.0]];
Вы контролируете толщину каждого кольца? –
@AaronBrager: Да, это делается путем установки свойств 'gaugeWidth' и' trackWidth' объекта на '16'. – fuzz