У меня есть метод:Получить кадр после того, как вид autolayout
- (void)underlineTextField:(UITextField *)tf {
CGFloat x = tf.frame.origin.x-8;
CGFloat y = tf.origin.y+tf.frame.size.height+1;
CGFloat width = self.inputView.frame.size.width-16;
UIView *line = [[UIView alloc] initWithFrame:(CGRect){x,y,width,1}];
line.backgroundColor = [UIColor whiteColor];
[self.inputView addSubview:line];
}
Это подчеркивает вход UITextField
; Текстовое поле имеет ширину, которая изменяется в зависимости от ширины экрана (автозапуск автозапуска).
Я попытался с помощью
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
и
[self.inputView setNeedsLayout];
[self.inputView layoutIfNeeded];
, прежде чем я называю этот метод без изменения результата. результирующая строка намного шире, чем UITextField (она соответствует исходному размеру в Nib).
Я просто хочу получившийся кадр UITextField в вопросе после обработки в autolayout
РЕШЕНИЕ: (с использованием «кирпичной кладкой» Autolayout)
- (UIView *)underlineTextField:(UITextField *)tf {
UIView *line = [[UIView alloc] initWithFrame:CGRectZero];
line.backgroundColor = [UIColor whiteColor];
[self.inputView addSubview:line];
[line mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(tf.mas_centerX);
make.width.equalTo(tf.mas_width).with.offset(16);
make.height.equalTo(@1);
make.top.equalTo(tf.mas_bottom);
}];
return line;
}
ура, я не уверен в полной программе для автоматической автоаудитации, но я нашел «масонство» большой помощью: – Halpo