UIImagePickerController提供了内部视图

时间:2010-04-30 19:11:18

标签: iphone iphone-sdk-3.0 ipad

是否可以在视图中显示UIImagePickerController,而不是使用模态或弹出框内?

我试过这个,没有成功......

if ([UIImagePickerController isSourceTypeAvailable:
     UIImagePickerControllerSourceTypePhotoLibrary]) {

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    NSArray *mediaTypesAllowed = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
    [picker setMediaTypes:mediaTypesAllowed];
    picker.delegate = self;

    [picker.view setFrame:CGRectMake(0,0, 400, 400)]; // just for testing
    [picker.view setCenter:CGPointMake(200,200)];

    [myView addSubview:picker.view];
    [picker.view release];

}

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

可以合法地完成吗?

你可以在popover / modal视图之外使用Image Picker,这本身并不违法,它只是不受支持。因此它很脆弱。当你提交你的应用程序时,你不会遇到麻烦,但是当你的新版本iOS出现时你会想要特别注意,因为它有可能破坏(因为它不支持使用图像选择器不同的方式)。

我联系了Apple的技术支持,因为我还需要实现类似于带有分段控件的iPad Pages.app popover。使用图像选择器作为分段控件之一查看内容。

我设置了一切并且正在工作,但我无法隐藏图像选择器中的“取消”按钮。这位Apple工程师告诉我,这不是一个受支持的解决方案,并告诉我Apple“过去已经知道使用私有API来实现某些结果”。我不认为这是一个巨大的惊喜。但我相信,至少在今天,他们至少会限制自己在App Store中发布的应用程序只使用公共API。

解决方法

请在BitBucket上查看我的git repo,我使用视图控制器包含工作(从iOS 5开始提供)。

https://bitbucket.org/danielphillips/image-picker-demo

它还包含一些隐藏取消按钮的黑客攻击。它确实使用了一个未记录的属性,我不确定你是否可以将它称为私有API,我以前从未试图破解Cocoa Touch的私有API,我从来没有真正为此烦恼,所以我不能如果这是一个轻微的黑客,或者苹果有软件可以检测到我使用私有API。

所以我不知道隐藏取消按钮部分是否会让你进入App Store,但它可能值得一试。

答案 1 :(得分:0)

我强烈怀疑没有超出API的可能性。

选择器视图的主要功能是安全地提供对系统范围资源的访问。换句话说,它有一个网守功能,Apple不希望任何应用程序能够覆盖。至少要强制执行它对光学库的访问限制,它必须是模态的。

这可能会在4.0中放松,但我有点怀疑。

答案 2 :(得分:0)

注意:“在弹出窗口外部轻敲它”规则有一个小例外,这导致我的一个应用程序提交中出现问题。如果你有一个工具栏,点击工具栏(技术上在popover =之外)不会忽略弹出窗口。如果你不为这种情况编码,可以一次产生两个弹出窗口,这将使你的应用程序被拒绝...