2

任何人都知道为什么 Jeff Lamarche 的带有提示类的警报视图在 iOS4 中使用时会产生一个大部分不在屏幕上的警报?可下载项目中的所有代码都可以在这里找到:

http://iphonedevelopment.blogspot.com/2009/02/alert-view-with-prompt.html

他的示例项目开箱即用,在 3.2 模拟器(在 ipad 上作为 iphone 应用程序运行)显示正确居中。但在 4.0 模拟器中,无论是在 iPhone 还是 iPhone 4 设备中,它在屏幕上都显得非常高,而且大部分都在屏幕外。我还没有在其他操作系统或实际设备上测试过它。

通过更改行:

CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, 130.0); 

至:

CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, 0.0); 

它在 iOS4 的屏幕中正确居中,但在 3.2 上太低了。当然,我可以根据正在使用的设备或操作系统来调整值,但我更想知道它为什么会关闭。

4

3 回答 3

1

FWIW,我刚刚在 Twitter 上进行了这样的交流:

我:

刚刚遇到@jeff_lamarche [链接已删除] 的 AlertPrompt,看起来很棒,但是从那以后还有更好的选择吗?

杰夫:http: //twitter.com/jeff_lamarche/status/21449214776

不要使用那个 AlertPrompt - 使用私有 API。最好的办法是在屏幕外的 UIView 中设计它,然后使用 Core Animation 来显示

于 2010-08-18T01:49:18.547 回答
1

我在推测,但仿射翻译首先看起来像是一个 hack。. . 据推测,Apple 的 UIAlertView 在 IOS4.0 之前将内容翻译了 -130,因此 LaMarche 加入了他的翻译来抵消这种情况。

然后在 4.0 中,假设 [这是推测性的] Apple 修复了它的类,LaMarche 的代码不再有效。

于 2010-07-14T18:15:05.493 回答
0

你可以做一个版本测试:

    if ([[[UIDevice currentDevice] systemVersion] floatValue] < 4.0) {
        CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, 130.0); 
        [self setTransform:translate];
    }

干杯

于 2011-02-03T18:08:50.500 回答