小编Ser*_*yov的帖子

在UITableView上冲突的手势识别器

我有两个自定义控件UIView,一个是现在流行的滑动菜单(当你NavBar在右边的视图幻灯片上滑动手指)而另一个是在UITableViewCell- 它是TableViewCell来自名为DMSlidingTableViewCell的控件的自定义(如Twitter应用程序 - 当您在左侧滑动单元格时,它会显示一些按钮等.)

它们工作正常,但是当我尝试在整个UITableView中添加一个Gesture识别器,从而使整个视图成为一个区域UIGestureRecognizer(所以当我移动它时我可以将视图移动到右侧),手势识别器会以某种方式发生冲突.

这可能是什么原因?

iphone objective-c uitableview ios

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

以模态方式呈现 UIImagePickerController 时出错

UIImagePickerController在 iOS 6 应用程序中呈现模态时遇到了一个奇怪的问题。该XCode给我这个错误:

Warning: Attempt to present <UIImagePickerController: 0x1e025040> on <UINavigationController: 0x1d51ce00> whose view is not in the window hierarchy!
Run Code Online (Sandbox Code Playgroud)

我有以下窗口层次结构AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window = window;

    firstViewController = [[SGNewMailViewController alloc] init];
    navController = [[UINavigationController alloc] initWithRootViewController:firstViewController];
    self.window.rootViewController = firstViewController;
    [self.window makeKeyAndVisible];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

在我的SGNewMailViewController我提出了一个 new UIView,一个SGFoldingAttachmentView类的成员,其中包含以下代码:

- (void)choosePhotoPressed {
    SGNewMailViewController *mailVC = [((SGAppDelegate *)[UIApplication sharedApplication].delegate).firstViewController.navigationController.viewControllers …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c uiview ios

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

使用8个图像在UIImageView周围创建边框

我制作了8张图像,每个角落有4张图像,每张边有4张图像UIImageView.现在,我在地球上如何使它们"绕过",view这样它们形成了一个漂亮,可伸缩的边框,就像这样(白线是我试图实现的边界): 在此输入图像描述

关于如何view基于8个预设图像实现边框的任何想法?

编辑:我不想边框,我想用我的8张图片!

iphone cocoa-touch objective-c uiimageview ios

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

在UIScrollView上浮动UIButton

我想实现我的应用程序的以下行为:我有一个UIScrollView对我与定制的视图contentSize,我想提出一个UIButton在其左下角呆在那里,当我滚动我想按钮留它的确切位置是视图,滚动视图的内容同时滚动.

最好的方法是什么?谢谢!

cocoa-touch objective-c uibutton uiscrollview ios

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

UIScrollView上的setContentOffset是正确的方法

我正在使用此代码向下滚动UIScrollView,因为我UIView从底部添加了一个新的,我想向下滚动到它.我是这样做的:

CGPoint newOffset = CGPointMake(mainScrollView.contentOffset.x, mainScrollView.contentOffset.y + floorf(bottomAttachmentView.frame.size.height / bottomAttachmentView.multFactor));
[mainScrollView setContentOffset:newOffset animated:YES];
Run Code Online (Sandbox Code Playgroud)

我基本上是我的新元素的高度增加了yUIScrollViewcontentOffset,但有时它滚动了滚动型contentSize,低,有可能滚动.之所以会发生这种情况,是因为我contentSize在调用上面的方法之前修改了它,并且Scroll View的高度会缩小.

你怎么称呼它setContentOffset所以它不会让我的scrollView滚动它自己的contentSize?谢谢!

iphone cocoa-touch objective-c uiscrollview ios

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

在NSMutableArray中轻松交换对象

我有一个NSMutableArrayUIViews,我把在UIScrollView其负责将它们按顺序.现在我有这个代码用于互换两个UIViews位置:

UIView *viewToBeChanged = [views objectAtIndex:self.page];
UIView *previousView = [views objectAtIndex:previousPage];

[views removeObjectAtIndex:self.page];
[views removeObjectAtIndex:previousPage];

[views insertObject:viewToBeChanged atIndex:previousPage];
[views insertObject:previousView atIndex:self.page];
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来改变NSMutableArray另一个对象的位置?谢谢!

cocoa-touch objective-c uikit nsmutablearray ios

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

从上次打开的UIViewController打开应用程序

我需要我的应用程序记住哪个是最后UIViewController打开的,所以当应用程序加载内存不足时,我替换了一个rootViewController属性AppDelegate保存在NSUserDefaults:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window = window;

    frontViewController = [[SGLoginScreenViewController alloc] init];

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:frontViewController];

    self.window.rootViewController = navController;
    [self.window makeKeyAndVisible];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是在ViewDidLoad每个方法中加入一些代码ViewController并记住它的名称NSUserDefaults以便以后使用它didFinishLaunchingWithOptions,如下所示:

[[NSUserDefaults standardUserDefaults] setObject:self forKey:@"currentViewController"];
[[NSUserDefaults standardUserDefaults] synchronize]; 
Run Code Online (Sandbox Code Playgroud)

但是,问题是XCode给了我这个警告:

*** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<SGMainScreenFirstTimeViewController: 0x8e1fea0>' of class 'SGMainScreenFirstTimeViewController'.  Note that dictionaries and arrays …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c uiviewcontroller ios

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

用大写字母对NSArray进行排序

我有一个NSArray看起来像这样:

contactNamesArray = [[NSMutableArray alloc] initWithObjects:@"John Galt", @"Michael Wales", @"James Joyce", @"Shakespeare", nil];
Run Code Online (Sandbox Code Playgroud)

从它,我想做一个NSArray将具有所有相同的值,但这将是这样的:

newContactNamesArray = [[NSMutableArray alloc] initWithObjects:@"john galt", @"michael wales", @"james joyce", @"shakespeare", nil];
Run Code Online (Sandbox Code Playgroud)

我想这样做,因为我想在第二个数组中进行搜索,我想用普通字母替换其中的每个大写字母.

你如何在Objective-C中做这样的事情?提前致谢!

iphone cocoa-touch objective-c nsarray ios

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

将NSData始终保存到同一文件中

我想将每个NSData对象保存到iOS中的临时目录,我希望每个新对象都覆盖旧对象.

对象将具有不同的格式和不同的大小.

我知道你是如何得到这条路的,NSTemporaryDirectory但是NSData每次添加一个新文件时,你怎么能在那里覆盖旧文件呢?

cocoa-touch objective-c nsdata ios

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

循环AVMutableCompositionTrack

我有两个音轨,我就像这样相互结合:

AVMutableComposition *composition = [[AVMutableComposition alloc] init];

AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack setPreferredVolume:1.0];
AVAsset *avAsset = [AVURLAsset URLAssetWithURL:originalContentURL options:nil];
AVAssetTrack *clipAudioTrack = [[avAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, avAsset.duration) ofTrack:clipAudioTrack atTime:kCMTimeZero error:nil];

AVMutableCompositionTrack *compositionAudioTrack1 = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack1 setPreferredVolume:0.01];
NSString *soundOne1  =[[NSBundle mainBundle]pathForResource:@"jingle1" ofType:@"m4a"];
NSURL *url1 = [NSURL fileURLWithPath:soundOne1];
AVAsset *avAsset1 = [AVURLAsset URLAssetWithURL:url1 options:nil];
AVAssetTrack *clipAudioTrack1 = [[avAsset1 tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
[compositionAudioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, avAsset.duration) ofTrack:clipAudioTrack1 atTime:kCMTimeZero error:nil];
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,第一个AVAsset是第二个轨道的基本长度,这意味着如果我有一个很长的第二个轨道,它将被切割,这正是我想要的方式.

但是,我需要能够循环第二个轨道,这样如果一个轨道太长,第二个轨道就会继续运行.我后来不得不将生成的曲目保存在光盘上,这也是一个重要因素.

经过一项研究,我发现在iOS中实际循环轨道没有方便的方法.其中一种方法是AVMutableComposition反复插入第二首曲目,但这对我来说听起来很奇怪.基于该主题的任何想法都将非常有用.

cocoa-touch core-audio ios avmutablecomposition avasset

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