gpt4 book ai didi

iphone - UIImage 在 UIDatepicker 上未正确对齐(仅在设备中)

转载 作者:行者123 更新时间:2023-11-29 03:57:33 28 4
gpt4 key购买 nike

我有一个 UIDatepicker,我在其中添加了边框图像,以便它位于 UIDatepicker border 的顶部。在模拟器中,边框图像正好位于 UIDatepicker 边框的顶部,但是当我在 iphone/ipod 设备上运行该项目时。边框图像往往不在正确的位置。为什么会发生这种情况?

当我点击settingsButton时..settingsButtonChanged方法被调用并在settingsView中添加日期选择器。

谢谢

更新:

 -(void)viewDidLoad
{
userTimePicker = [[UIDatePicker alloc]init

}


-(IBAction)settingsButtonChanged:(UIButton *)sender
{


UIImageView *settingsImage = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"settingsViewImage.png"]];
settingsImage.frame = CGRectMake(0.0, 0.0, 280.0, 370.0);

CGFloat height = [UIScreen mainScreen].bounds.size.height;

if(height==568.00)
{
settingsView.frame = CGRectMake(0.0, 50.0, 280.0, 370.0);

}else
{
settingsView.frame = CGRectMake(20.0, 45.0, 280.0, 370.0);
}

settingsView.backgroundColor = [UIColor clearColor];
[settingsView addSubview:settingsImage];


UIImageView *userTimePickerBorder = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"datepickerBorder.png"]];
userTimePickerBorder.frame = CGRectMake(0.0, 0.0, 150.0, 180.0);

userTimePicker.frame = CGRectMake(65.0, 165.0, 150.0, 180.0);
userTimePicker.datePickerMode = UIDatePickerModeTime;

[settingsView addSubview:userTimePicker];
[userTimePicker addSubview:userTimePickerBorder];

[symptomView addSubview:settingsView];
}

最佳答案

建议 1

首先,这段代码毫无意义:

- (void)viewDidLoad {
userTimePicker = [[UIDatePicker alloc]init];
}

考虑一下它的作用。假设您有一个名为 userTimePicker 的属性或实例变量(您一定有类似的东西,对吧?)。现在,它要么是指向来自 Nib / Storyboard的实际日期选择器的导出,要么不是。那么:

  • 如果是的话,现在就不是了!您刚刚使用不同日期选择器覆盖了界面中对实际日期选择器的引用。

  • 如果不是,则您刚刚将 userTimePicker 设置为日期选择器,但该日期选择器不在界面中(您没有代码将其添加到界面中) .

所以,无论哪种方式,从现在开始,userTimePicker都没用了;它不指向界面中的任何内容。

所以在做其他事情之前你肯定需要解决这个问题!

建议2

另外,我对为什么模拟器上的结果与设备上的结果不同有一个建议:可能是因为您一直在模拟器上反复测试。这可能会导致旧的代码/资源出现在应用程序的模拟器版本中。要解决此问题,请清除缓存并将模拟器恢复为默认设置,如下所示:https://stackoverflow.com/a/6247073/341994我希望这至少能让模拟器和设备表现得一样!然后您就可以继续修复代码的真正业务了。

建议3

这段代码真的很奇怪:

    CGFloat height = [UIScreen mainScreen].bounds.size.height;

if(height==568.00)
{
settingsView.frame = CGRectMake(0.0, 50.0, 280.0, 370.0);

}else
{
settingsView.frame = CGRectMake(20.0, 45.0, 280.0, 370.0);
}

您不应该查询屏幕边界的任何内容!所有这些都应该在某个 View Controller 中发生。 View Controller 的 View 应该旋转并调整大小以适应设备方向或屏幕尺寸,因此 View Controller View 的边界将会改变,这是您应该检查的。

您应该用 View Controller View 的边界或它们要进入的 super View 的边界来表达它们,而不是对这些帧值进行硬编码。这会给你一致的结果。更好的是,如果这是在 iOS 6 上,请使用约束而不是设置框架。

关于iphone - UIImage 在 UIDatepicker 上未正确对齐(仅在设备中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16322023/

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