我现有的iOS应用程序用于目标设备iPad Air,我希望它能够在iPad PRO上运行。一切正常,但我需要一个图像在两个设备上保持相同的尺寸(mm上的realSize)。
两台设备的分辨率相同,所以我不明白为什么Image Pro在iPad Pro上更大。这是我绘制图像的方式。
- (void) drawNewNumberImage {
int index = arc4random()%_allNumbers.count;
while([_currentNumber isEqualToString:[_allNumbers objectAtIndex:index]]) {
index = arc4random()%_allNumbers.count;
}
_currentNumber = [_allNumbers objectAtIndex:index];
int s = _size;
//_imgView.image = [UIImage imageNamed:[_allNumbers objectAtIndex:index]];
_imgView.image = [ImageProvider getPDFVectorImage:[_allNumbers objectAtIndex:index] AndFontSize:s];
CGRect frame = _imgView.frame;
frame.size = CGSizeMake(s, s);
_imgView.frame = frame;
_imgView.center = CGPointMake(CGRectGetWidth(self.view.frame)/2 , CGRectGetHeight(self.contentView.frame)/2);
}
似乎iPad Pro只是扩展了所有应用程序。有没有办法禁用此行为。
答案 0 :(得分:1)
您可以尝试检测它是否是iPad专业版并创建您想要的新尺寸,否则您的工作默认尺寸将会启动。
- (void) drawNewNumberImage {
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
CGSize result = [[UIScreen mainScreen] bounds].size;
if(result.height == 1366)
{
// iPad Pro
//add your iPad Pro sizes
} else {
int index = arc4random()%_allNumbers.count;
while([_currentNumber isEqualToString:[_allNumbers objectAtIndex:index]]) {
index = arc4random()%_allNumbers.count;
}
_currentNumber = [_allNumbers objectAtIndex:index];
int s = _size;
//_imgView.image = [UIImage imageNamed:[_allNumbers objectAtIndex:index]];
_imgView.image = [ImageProvider getPDFVectorImage:[_allNumbers objectAtIndex:index] AndFontSize:s];
CGRect frame = _imgView.frame;
frame.size = CGSizeMake(s, s);
_imgView.frame = frame;
_imgView.center = CGPointMake(CGRectGetWidth(self.view.frame)/2 , CGRectGetHeight(self.contentView.frame)/2);
}
}
答案 1 :(得分:1)
如果您要针对iOS 8 SDK进行构建,则需要以正确的大小添加启动图像。否则Apple假定您不知道如何在iPad Pro中处理并扩展所有内容。检查代码获取屏幕大小的位置和NSLog;如果你得到1024 x 768,那么你就错过了正确的发射图像。
顺便说一句。你应该真的,真的不看看屏幕的高度或宽度并做出假设,就像另一个答案一样,因为在iPad Pro上使用分屏你的假设可能非常非常错误并且让你进入麻烦。