更新:
使用iPhone OS 3.0+,整个UIImagePickerController API已更改.应该考虑这个问题和答案2.2.遗留代码.
使用UIImagePickerController并允许编辑图像时.iPhone允许用户调整图像大小并平移图像.但是,编辑图像的最大尺寸上限为320x320.
作为一个例子,我拍了一张iPhone屏幕截图并将其放在照片库中,这是一个480x320 png.当我使用UIImagePickerController选择该图像时,即使我没有缩放或平移图像,它也会在从UIImagePickerController返回之前被裁剪为320x320.但是,如果我关闭编辑,图像将返回正确的480x320尺寸.
我的理论:非常巧妙地,iPhone显示2个非标准的半透明工具条,覆盖在图像上.这些工具栏在照片上留下了一个无害的320x320"窗口".在我看来,这个窗口有效地剪辑了底层照片.
注意:回调还会返回包含原始图像和剪切矩形的编辑字典,但当然rect也是最大320x320.
关于如何允许大于320x320的图像进行缩放和平移的任何想法?
一些代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
self.myImageView.userInteractionEnabled=YES;
CGRect imageFrame = myImageView.frame;
CGPoint imageCenter = myImageView.center;
imageFrame.size = img.size;
myImageView.frame = imageFrame;
self.myImageView.image = img;
myImageView.center = imageCenter;
[self dismissModalViewControllerAnimated:YES];
[self performSelector:@selector(hideToolBars) withObject:nil afterDelay:2.0];
}
Run Code Online (Sandbox Code Playgroud) 我试图区分iPhone上的两个(或更多)UITouch对象.具体来说,我想知道触摸发生的顺序.
例如,在我的-touchesBegan:withEvent:方法中,我获得了一个UITouch对象的NSSet.现在我可以找出有多少触摸,但是,哪个对象代表哪个手指?
我注意到UITouch上的时间戳属性 - 这就是我要找的东西吗?我知道如何获得最后一次或第一次触摸是有用的 - 提供触摸不会变异......
这就是我的问题所在.我可以使用时间戳来挑出最新的触摸,但随后首先发生的触摸移动,IT成为最新的触摸......
在本练习结束时,我希望能够实现"捏"手势来放大或缩小等.
非常感谢任何帮助,谢谢.
我通过添加Default.png为我的应用程序添加了一个启动画面.启动画面在模拟器中工作正常,但未在真实设备上显示
在3.1 SDk中,Apple增加了对相关对象的支持.
但是,模拟器不会编译包含对objc_setAssociatedObject,objc_getAssociatedObject等的引用的代码.(未声明的错误)
有没有解决的办法?我可以让iPhone模拟器编译这段代码吗?我不想在设备上进行所有测试.
更新
Bug Filed:rdar:// 7477326
如果使用上面的NSArray方便方法初始化NSMutableArray,你会得到一个NSArray或NSMutableArray吗?
任何后果?
(我知道NSMutableArray有"arrayWithCapacity:",我只是好奇)
更新
已经提到,不会根据文档调用viewWillAppear和viewDidAppear.但是,我在这些方法中不执行初始化,也没有向视图添加UI元素.
我只是用它们来设置断点来尝试调试它.
还有其他想法吗?
原始问题
我很难过.我正在重构一些代码,并遇到了一些奇怪的行为....
我在没有nib的情况下初始化viewController A并以编程方式设置视图.
调用控制器A中的viewDidLoad.
在viewController A的viewDidLoad里面,我从一个nib初始化viewController B.
我将viewControllerB.view添加为viewControllerA.view的子视图
调用控制器B的viewDidload.
然后它变得奇怪:
viewController B的viewWillAppear和viewDidAppear 永远不会被调用.
viewControllerB.view 永远不会在屏幕上显示它.
没有错误.
我查过的东西:
viewControllerBs Nib的名称是正确的.
viewControllerB的视图出口连接到视图.
viewControllerB及其视图都是非零的.
最重要的是,SDK [编辑] beta 5中的一切都很棒!
有任何想法吗?它必须是愚蠢的东西..
我有一个iPhone应用程序,我将其用作多个应用程序的模板.我想更改每个应用程序的可执行文件的名称(不是手机上的应用程序显示名称).
我在目标构建设置中看到我可以将密钥"Product Name"更改为我想要的新可执行文件名.
还有什么我需要改变的吗?
它似乎是编译,只是想确保我在签署分发版本或其他任何东西时都没有遇到任何问题.
谢谢
我知道如何使用这些说明恢复到文件夹的特定修订:
但是,我删除了整个文件夹,并希望在不恢复存储库其余部分的情况下返回该文件夹.
我尝试重新创建文件夹然后合并更改,但svn知道我的技巧,并意识到它是一个新的文件夹.
我该怎么做?
当我在现有项目中将编译器版本切换到Clang llvm 1.0时,在预编译*.pch文件时出现以下构建错误:
error: can't exec '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2' (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
我需要更改另一个设置以使我的项目与新编译器一起使用吗?
(我确实试过清洁所有目标)
更新:
澄清:
由于新编译器确实可以处理新项目,因此问题不在于我的系统缺少任何东西.
另外,Xcode甚至不应该试图找到llvm-gcc-4.2,因为我要从编译器切换到新的编译器,Clang llvm 1.0.这让我相信还有另一个环境需要改变.
感谢fbereto的建议.实际的答案在于评论.
使用以下内容不起作用:
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
Run Code Online (Sandbox Code Playgroud)
通过不起作用我的意思是不做任何替代,所以永远.它返回完全相同的字符串.
有没有方便的方法来做到这一点?相近:
- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
Run Code Online (Sandbox Code Playgroud)
我的代码(只有一行):
NSString *escapedPath = [pathToBeConverted stringByReplacingOccurrencesOfString:@" "
withString:@"\ "];
Run Code Online (Sandbox Code Playgroud)
另外,我的编译器警告.这可能与此有很大关系:
warning: unknown escape sequence: '\040'
Run Code Online (Sandbox Code Playgroud) iphone ×8
cocoa-touch ×6
objective-c ×5
xcode ×3
cocoa ×2
uikit ×2
multi-touch ×1
nsstring ×1
recovery ×1
repository ×1
svn ×1