我的 ThermostatSettingViewController 有一个静态图像,并在界面生成器中分配了 UIButton 位置,以与 png 图像上的视觉布局相对应。我必须在 IB 上设置不要调整大小标志,因为如果图像被缩放以适合更大屏幕的 UIView,则 UIButton 不再位于正确的位置。由于 UIButtons 设置为“No Name”并且只是一个不可见的按钮,因此您找不到它们。
我已经尝试了正常的 XIB 定位、约束,几乎所有我能想到的,都没有成功。
编辑:
如果没有人找到方法,我能想到的唯一方法是静态图像并通过点数确定每个按钮和标签应该动态放置的中心。然后找出当前的 UIView 大小(以磅为单位)并计算(实际上只是相乘)每个按钮中心的新 X、Y 值。
当然,痛苦在于煞费苦心地计算基础图像上的每个像素/点,并为每个标签或按钮确定基线分配 X、Y。
如果是这样的话,我愿意试一试,但还有两个问题:
有没有人可以从我的基本图像中输出 X、Y 坐标的实用程序。类似于光标所在的位置。然后我可以将每个存储在字典中并查找相应标签/按钮的位置。
.bounds 参数是否足以告诉我 X,Y 视图对于图像的点数有多大?那么,有没有人有任何代码可以在当前视图中给定 X,Y 坐标动态定位控件(如约束)?
任何帮助,将不胜感激。
有没有人有一种方法可以根据返回的 ImageView 大小来计算按钮应该放置的位置的相对位置?
下面是 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 上,图像显示在左上角,因为我无法调整它的大小。