gpt4 book ai didi

objective-c - 约束两个文本字段以保持宽高比

转载 作者:行者123 更新时间:2023-12-03 17:54:40 25 4
gpt4 key购买 nike

我有两个文本字段:一个用于宽度,一个用于高度。

假设起始值为 1080 x 720。如果用户将 720 更改为 360,我想自动将 1080 更改为 540。

最好的方法是什么?

最佳答案

向您的 Nib 添加一个数字格式化程序,并将其配置为将字段限制为整数值,并将您的 Controller 指定为两个文本字段的委托(delegate)。

显示 View 时,您还需要填写初始值并更新文本字段。此版本基于 NSPopoverDelegate,但您可以对其进行调整。

@property (assign) NSUInteger width;
@property (assign) NSUInteger height;

-(void)awakeFromNib {
self.numberFormatter.minimumFractionDigits = 0;
self.numberFormatter.maximumFractionDigits = 0;
}

-(void)popoverWillShow:(NSNotification *)notification {
self.width = ___;
self.height = ___;
self.widthField.stringValue = @"";
self.heightField.stringValue = @"";
}

-(void)controlTextDidChange:(NSNotification *)obj {
NSTextField *sender = obj.object;
NSTextView *textView = [obj.userInfo objectForKey:@"NSFieldEditor"];
NSString *stringValue = textView.string;
NSNumber *numberValue = [self.numberFormatter numberFromString:stringValue];
if (!stringValue.length || !numberValue) {
self.resizeButton.enabled = NO;
} else {
NSInteger integerValue =
[[self.numberFormatter numberFromString:stringValue] integerValue];
if (self.widthField == sender) {
self.heightField.integerValue =
self.height * integerValue / self.width;
} else if (self.heightField == sender) {
self.widthField.integerValue =
self.width * integerValue / self.height;
}
self.resizeButton.enabled = YES;
}
}

关于objective-c - 约束两个文本字段以保持宽高比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15394649/

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