小编Tom*_*ing的帖子

使用[[NSBundle mainBundle] resourcePath]中的路径

我确定这是一个非常基本的问题,但我无法找到任何相关信息.

说我的应用程序在一个文件夹中,在一些更多的文件夹中,如下所示:

  • MainFolder> SecondaryFolder> AppBundle.app>所有东西

然后,我想要做的是访问"MainFolder"中的文件.我知道我可以通过以下方式获得AppBundle的路径:

NSLog(@"%@",[[NSBundle mainBundle] resourcePath]);

我不确定的是如何获得"MainFolder"的路径.

任何指针都会很棒!

谢谢,汤姆

directory path objective-c nsbundle

17
推荐指数
2
解决办法
4万
查看次数

通过向现有UIImage添加阴影来创建新的UIImage

我看了一下这个问题:UIImage Shadow Trouble

但接受的答案对我不起作用.

我正在尝试做的是采用UIImage并为其添加阴影,然后返回一个全新的UIImage,阴影和所有.

这就是我正在尝试的:

- (UIImage*)imageWithShadow {

    CGColorSpaceRef colourSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef shadowContext = CGBitmapContextCreate(NULL, self.size.width, self.size.height + 1, CGImageGetBitsPerComponent(self.CGImage), 0, 
                                                 colourSpace, kCGImageAlphaPremultipliedLast);
    CGColorSpaceRelease(colourSpace);

    CGContextSetShadow(shadowContext, CGSizeMake(0, -1), 1);
    CGContextDrawImage(shadowContext, CGRectMake(0, 0, self.size.width, self.size.height), self.CGImage);

    CGImageRef shadowedCGImage = CGBitmapContextCreateImage(shadowContext);
    CGContextRelease(shadowContext);

    UIImage * shadowedImage = [UIImage imageWithCGImage:shadowedCGImage];
    CGImageRelease(shadowedCGImage);

    return shadowedImage;
}
Run Code Online (Sandbox Code Playgroud)

结果是我得到了与之前通过此方法完全相同的图像.

我这样做是正确的,或者有什么明显的东西我不见了?

iphone cocoa-touch objective-c uiimage cgcontext

10
推荐指数
5
解决办法
1万
查看次数

UITextView NSAttributedString大小

我正在使用一个使用UITextView的应用程序.

UITextView应该增大或缩小以适合其文本,包括垂直和水平.为此,我在子类中重写sizeToFit,并设置边界,如下所示:

- (void)sizeToFit {
    [self setBounds:(CGRect){.size = self.attributedText.size}];
}
Run Code Online (Sandbox Code Playgroud)

问题是这个大小只是没有反映字符串的正确大小,因为UITextView会剪切文本.我将边缘插入设置为零,所以这不应该是一个问题吧?

在这一点上,我认为这是NSAttributedString的size属性的一个错误,但是如果我使用boundingRectWithSize,则会发生同样的事情:options:context:

[self setBounds:(CGRect){.size = [self.attributedText boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:0 context:nil].size}];
Run Code Online (Sandbox Code Playgroud)

因此,无论代码是什么,NSAttributedString的布局计算都无法与UITextView的布局计算很好地协作.

这是演示该问题的示例项目.

欢迎任何想法!

编辑:我还应该指出以下不起作用:

- (void)sizeToFit {
    [self setBounds:(CGRect){.size = [self sizeThatFits:self.attributedText.size]}];
}
Run Code Online (Sandbox Code Playgroud)

objective-c uitextview uikit nsattributedstring ios

9
推荐指数
1
解决办法
9003
查看次数

监控网络流量Mac

我想知道如何在我的Mac上监控网络流量.就像活动监视器一样,显示字节/数据包的输入和输出.

我知道这有点模糊,但我不确定最好的起点.

编辑:我想在代码中执行此操作,而不是使用现有的软件.

networking cocoa objective-c monitor traffic

7
推荐指数
1
解决办法
3564
查看次数

UITextView更改高度而不是滚动

默认情况下,当文本视图中的文本太多时,UITextView的contentView会变得可滚动.

我想禁用它,而是更新UITextView的高度以适应文本.我这样做的原因是因为我将UITextView添加为UIScrollView的子视图,它应该处理滚动,就像在本机Mail应用程序中一样(当你输入文本时,整个视图向上滚动,而不仅仅是textview .

任何人有一些想法/之前遇到过同样的问题?

iphone subview uiscrollview uitextview

6
推荐指数
2
解决办法
1万
查看次数

textField:shouldChangeCharactersInRange:replacementString:in subclass

我已经将UITextField子类化,并且我想使用类似于textField:shouldChangeCharactersInRange:replacementString:子类内部的方法来在键入字符时获得通知,并在必要时阻止更改,但是避免将字段委托给自己.

我发现如果我覆盖keyboardInput:shouldInsertText:isMarkedText:并且keyboardInputShouldDelete:我可以获得所需的效果,不幸的是这些方法是私有的,任何使用该类的东西都不会通过App Store提交过程.

任何人都知道一个公共方法实现同样的事情,并不要求该字段是自己的委托?

更新:

我接着建议创建一个单独的对象只是作为委托,它本身可以有一个委托来转发消息.

iphone cocoa-touch delegates uitextfield ios

6
推荐指数
1
解决办法
3579
查看次数

在向其发送消息之前检查对象是否已被释放

我最近才注意到,当一个对象尝试向其委托发送消息并且该委托已经被释放时,我的一个应用程序崩溃了.

目前,在调用任何委托方法之前,我运行此检查:

if (delegate && [delegate respondsToSelector:...]){
   [delegate ...];
}
Run Code Online (Sandbox Code Playgroud)

但显然这并不能说明代表是否为零,但已被解除分配.

除了在委托dealloc方法中将对象的委托设置为nil之外,有没有办法检查委托是否已经被释放,因为我不再有对该对象的引用.

cocoa delegates objective-c

5
推荐指数
2
解决办法
5122
查看次数

动画CALayer隐藏

我试图CALayer在几微秒后隐藏a ,然后使用CABasicAnimation动画对隐藏进行动画处理。

目前,我正在尝试使用

[aLayer setHidden:YES];

CABasicAnimation * hideAnimation = [CABasicAnimation animationWithKeyPath:@"hidden"];
[hideAnimation setDuration:aDuration];
[hideAnimation setFromValue:[NSNumber numberWithBool:NO]];
[hideAnimation setToValue:[NSNumber numberWithBool:YES]];
[hideAnimation setBeginTime:0.09];
[hideAnimation setRemovedOnCompletion:NO];
[hideAnimation setDelegate:self];

[alayer addAnimation:hideAnimation forKey:@"hide"];
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此命令时,该层将立即隐藏,而不是等待所需的beginTime。

我不确定我的keyPath是否为“隐藏”,但找不到其他任何选择,并且文档确实指出a的hidden属性CALayer是可动画的。

实现我正在寻找的正确方法是什么?

cocoa objective-c calayer cabasicanimation

5
推荐指数
1
解决办法
5643
查看次数

NSNumber for MPMediaItemPropertyPersistentID到NSString并再次返回

我正在使用以下代码循环播放iPhone音乐库中的所有歌曲:

NSArray * songs = [[NSArray alloc] initWithArray:[[MPMediaQuery songsQuery] collections]];

for (MPMediaItemCollection * item in songs){

    NSString * persistentID = [[[item representativeItem] valueForProperty:MPMediaItemPropertyPersistentID] stringValue];
    // Do something with it.
}

[songs release];
Run Code Online (Sandbox Code Playgroud)

很基本的东西.

我将PersistentID作为一个NSString因为我需要将其写入XML文件(通过网络传输到另一个设备).因此,我不能把它留作一个NSNumber.

然后另一个设备将通过再次发送PersistentID来要求iPhone播放曲目.

此时,iPhone有一个NSString应该播放的轨道的PersistentID.

再次循环播放每首歌曲并比较PersistentID直到我找到我想要的曲目将会很简洁,所以我试图用MPMediaPropertyPredicateiPhone来搜索我.

我正在使用以下代码进行搜索:

MPMediaPropertyPredicate * predicate = [MPMediaPropertyPredicate predicateWithValue:persistentID forProperty:MPMediaItemPropertyPersistentID];

MPMediaQuery * songsQuery = [[MPMediaQuery alloc] init];
[songsQuery addFilterPredicate:predicate];

if ([[songsQuery items] count]){

    MPMediaItem * item = [[songsQuery items] objectAtIndex:0];
    // Play item.
}

[songsQuery release];
Run Code Online (Sandbox Code Playgroud)

哪里 …

iphone cocoa-touch objective-c mpmediaquery

5
推荐指数
1
解决办法
4154
查看次数

Objective-C中的RSA加密(Mac)

我正在攻击需要RSA加密的东西,我有一些看起来像这样的代码:

- (NSData *)RSAEncryptData:(NSData *)data {

    NSMutableData * encrypted = [NSMutableData dataWithLength:256];

    RSA * rsa = RSA_new();
    rsa->n = BN_bin2bn(modulus.bytes, modulus.length, NULL);
    rsa->e = BN_bin2bn(exponent.bytes, exponent.length, NULL);

    RSA_public_encrypt(data.length, data.bytes, encrypted.mutableBytes, rsa, RSA_PKCS1_OAEP_PADDING);
    RSA_free(rsa);
    return encrypted;

}
Run Code Online (Sandbox Code Playgroud)

模数和指数是NSData对象.

这很好用,除了所有RSA方法之外,编译器还在抱怨我们在Mac OS 10.7上如何弃用它们.

我应该采用更现代的方式吗?我已经谷歌搜索了几个小时,只能找到Mac上没有的iOS东西(SecKeyEncrypt等).

要绝对清楚,我不是在寻找iOS解决方案,我正在寻找Mac OS.

encryption macos cocoa rsa objective-c

5
推荐指数
1
解决办法
2840
查看次数

如何在iOS中读取,写入和检查不区分大小写的文件名?

我知道iOS文件名区分大小写,而OSX文件名可能不区分大小写.Apple的iCloud设计指南说:

"要使文档文件格式跨平台兼容,您必须以不区分大小写的方式读写文件." (来自http://developer.apple.com/library/ios/#documentation/General/Conceptual/iCloudDesignGuide/Chapters/DesigningForDocumentsIniCloud.html)

我想让我的应用程序的文件管理在iOS中不区分大小写.处理读写文件的正确方法是什么,并且[NSFileManager fileExistsAtPath:]在iCloud和本地文件系统中以不区分大小写的方式检查iOS中是否存在(使用)文件?

file-io objective-c case-sensitive case-insensitive ios

5
推荐指数
1
解决办法
2066
查看次数

UIView动画VS核心动画

我试图动画一个滑入视图的视图,一旦它碰到屏幕的一侧就弹跳.

我正在做的幻灯片的基本示例如下:

// The view is added with a rect making it off screen.
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.07];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[theView setFrame:CGRectMake(-5, 0, theView.frame.size.width, theView.frame.size.height)];
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

然后在didStopSelector中调用更多动画以产生反弹效果.问题是当多个视图被动画化时,弹跳变得不稳定,而且,不再反弹.

在我开始阅读Core Animation中如何做到这一点之前(我明白它有点困难)我想知道使用Core Animation而不是UIView动画是否真的有优势.如果没有,我可以采取哪些措施来提高性能?

iphone cocoa-touch core-animation objective-c uiview

3
推荐指数
1
解决办法
5691
查看次数