gpt4 book ai didi

ios - 根据另一个的增长缩小 UITextField 的宽度

转载 作者:行者123 更新时间:2023-11-29 00:20:25 25 4
gpt4 key购买 nike

我正在尝试根据另一个增加的宽度来修改 UITextField 的宽度。这是我的布局示例:

Layout with two text fields

在左侧框(一旦选择,它包含 int 对话框代码)我想将其设置为边距 0 以开始并扩展右侧的 UITextField 。当左侧框包含数据时,我想相对于该数据调整右侧文本字段的边框。

我知道如何在 Android 中轻松做到这一点,但我在 Xcode 中运气不佳。谁能指出我正确的方向?

最佳答案

基本思想是

  1. 观察文本改变事件
  2. 重新计算宽度
  3. 更新宽度约束的 constant 属性

这是一个简单的演示,需要考虑更多的边缘情况。

demo

- (void)viewDidLoad {
UIView *container = [[UIView alloc] initWithFrame:CGRectMake(100, 150, 175, 100)];
container.backgroundColor = [UIColor grayColor];
[self.view addSubview:container];

//initialize text fields
UITextField *leftInput = [[UITextField alloc] initWithFrame:CGRectZero];
leftInput.translatesAutoresizingMaskIntoConstraints = NO;
[leftInput addTarget:self action:@selector(textDidChange:) forControlEvents:UIControlEventEditingChanged];
[container addSubview:leftInput];

UITextField *rightInput = [[UITextField alloc] initWithFrame:CGRectZero];
rightInput.translatesAutoresizingMaskIntoConstraints = NO;
[container addSubview:rightInput];

//setup constraints
NSDictionary *views = NSDictionaryOfVariableBindings(container, leftInput, rightInput);
NSMutableArray *constraints = [NSMutableArray array];
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[leftInput]-[rightInput]-|" options:0 metrics:nil views:views]];
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[leftInput]-|" options:0 metrics:nil views:views]];
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[rightInput]-|" options:0 metrics:nil views:views]];
NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:leftInput attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:0 multiplier:0 constant:minWidth];
[constraints addObject:widthConstraint];
self.widthConstraint = widthConstraint;
[NSLayoutConstraint activateConstraints:constraints];
}

- (void)textDidChange:(UITextField *)textInput {
NSDictionary *attributes = @{NSFontAttributeName: textInput.font};
CGFloat width = [textInput.text sizeWithAttributes:attributes].width;
self.widthConstraint.constant = MAX(minWidth, width);
}

关于ios - 根据另一个的增长缩小 UITextField 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44294412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com