Tag: 客观

UITableViewCell中的CALayer阴影绘制不正确

我使用CALayer将阴影应用于UITableViewCell。 这是我的代码: – (void)addShadowToView:(UIView *)view { // shadow view.layer.shadowColor = [[UIColor colorWithWhite:0.0f alpha:0.1f] CGColor]; view.layer.shadowOpacity = 1.0f; view.layer.shadowOffset = CGSizeMake(0.0f, 3.0f); view.layer.shadowRadius = 6.0f; CGRect shadowFrame = view.layer.bounds; CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:shadowFrame].CGPath; view.layer.shadowPath = shadowPath; } 问题是,对于一些tableviewcells,阴影不会跨越单元格的整个宽度。 对于一些细胞来说,这是正确的,对于其他细胞来说是错误的。 我注意到设备的旋转也会影响它,重新加载tableview数据有时可以解决这个问题。 什么是最好的方法来缓解这个问题(并且我并不是说要重新加载整个tableview每轮等)? 正确应用阴影的单元格底部示例: 向下滚动之后,在同一个tableview中的单元格底部(阴影只应用于宽度的前75%): 编辑:我注意到这个问题是由这些代码行引起的: CGRect shadowFrame = view.layer.bounds; CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:shadowFrame].CGPath; view.layer.shadowPath = […]

AVCaptureSession的addInput导致后台audio出现毛刺

我正在制作一个video捕捉iOS应用程序,我希望能够从麦克风录制audio,同时允许播放背景音乐。 我可以做所有这些,但是只要相机的视图进入并退出前景,背景audio就会跳过(暂停一下)。 我已经隔离了AVCaptureSession addInput错误: AVCaptureSession session = [[AVCaptureSession alloc] init]; session.automaticallyConfiguresApplicationAudioSession = NO; AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; AVCaptureDeviceInput *audioDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:nil]; // this line causes the background music to skip [session addInput:audioDeviceInput]; 如何防止添加麦克风input影响背景audio? fyi – 在didFinishLaunchingWithOptions我设置AVAudioSession类别: [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];

UITableViewCell中的UIViewanimation

我正在开发一个iOS应用程序,在一个视图中具有两个自定义UITableViewCell 。 所有这些使用主要的故事板。 一切工作都很好。 但是我需要实现的是从一个单元格在一个UIView单个淡入/淡出animation。 目前我正在使用这个代码来animation视图: [UIView animateWithDuration:1.2 delay:0 options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveEaseInOut animations:^{ self.myView.alpha = 0; } completion:^(BOOL finished) { self.myView.alpha = 1; }]; 在我调用UITableView的tableView:cellForRowAtIndexPath:数据源方法的“set content”方法中。 animation工作正常。 即使观点之间的变化仍然animation视图。 我的问题是,当我重新加载数据从表视图或表视图向上或向下滚动,直到与animation的单元格消失,它必须重用该单元格再次显示,在那一刻的单元格提交没有animation。 我在这里错过了什么? 有没有更好的方法来实现这一点? 表格视图重用单元格后,如何重新启动animation? 我认为重要的是要说,根据我的UIdevise,只有一个单元格将有animation。 谢谢。

我如何等待,直到一个UITableView内置animation完成?

[self.tableView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 1)] withRowAnimation:UITableViewRowAnimationLeft]; [self.tableView reloadRowsAtIndexPaths:@[ [NSIndexPath indexPathForItem:1 inSection:1]] withRowAnimation:UITableViewRowAnimationRight]; 在上面的代码中,如何在第一行的animation完成后执行第二行? 我试过这个… [self.tableView beginUpdates]; [self.tableView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 1)] withRowAnimation:UITableViewRowAnimationLeft]; { [self.tableView beginUpdates]; [self.tableView reloadRowsAtIndexPaths:@[ [NSIndexPath indexPathForItem:1 inSection:1]] withRowAnimation:UITableViewRowAnimationRight]; [self.tableView endUpdates]; } [self.tableView endUpdates]; 和这个… [self.tableView beginUpdates]; { [self.tableView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 1)] withRowAnimation:UITableViewRowAnimationLeft]; } [self.tableView endUpdates]; [self.tableView beginUpdates]; { [self.tableView reloadRowsAtIndexPaths:@[ [NSIndexPath indexPathForItem:1 inSection:1]] withRowAnimation:UITableViewRowAnimationRight]; […]

在iOS上录制audio而不停止音乐播放

使用AVAudioSession录制audio时,音乐应用程序或其他audio应用程序停止播放audio。 audio会话文档中对此进行了描述: AVAudioSessionCategoryRecord 用于录制audio; 这个类别沉默回放audio。 有什么方法可以改变这种行为,并执行以下任一操作? 1)继续播放其他应用的audio,并允许手机录制正在播放的audio。 2)简短录制完成后恢复其他应用程序的audio。 当audio中断开始或结束时,应用程序可以响应通知。 是否有其他的应用程序接收这些通知必须做的具体事情?

是否有可能暂停一个UIDynamicAnimator而不删除和添加UIDynamicBehaviours?

我正在使用UIDynamics实现一些animation,以便在视图之间启用一些基于物理的转换。 我想暂停并以编程方式继续这些animation响应用户触摸。 到目前为止,我发现这样做的唯一方法是从dynamicanimation器中删除行为,然后像这样重新添加它们: -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [self.dynamicAnimator removeBehaviour: self.behaviour1]; [self.dynamicAnimator removeBehaviour: self.behaviour2]; // etc } -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { self.behaviour1 = [[UIGravityBehavior alloc] initWithItems: @[self.item]]; self.behaviour1.gravityDirection = self.gravityVector; [self.dynamicAnimator addBehaviour: self.behaviour1]; self.behaviour2 = [[UICollisionBehavior alloc] initWithItems: @[self.item]]; [self.behaviour2 addBoundaryWithIdentifier: @"Boundary" forPath: self.boundary]; [self.dynamicAnimator addBehaviour: self.behaviour2]; // etc } (另外:我还使用了[self.dynamicAnimator updateItemUsingCurrentState: item]而不是重新创build行为,但是我仍然需要将它们从dynamicanimation中移除,并重新添加它们以便在用户触摸时暂停屏幕。) 我想能做的是self.dynamicAnimator.running […]

为UIControlStateHighlighted定制UISearchBarIconClear不起作用

我有一个UISearchBar我已经为UiControlStateNormal设置了一个自定义的UISearchBarIconClear。 [mySearchBar setImage:myImage forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal]; 这部分工作,因为它应该,但不幸的是,当点击清除button,它从我设置的图像更改为原来的默认灰色。 我试图设置UIControlStateHighlighted图像,但显然这是行不通的。 文件实际上说 有效的状态是UIControlStateNormal和UIControlStateDisabled。 如果您不能将其设置为突出显示的状态,那么为默认状态设置自定义button有什么意义? 我错过了什么吗? 任何想法或变通赞赏,谢谢!

预先cachingAFNetworking的UIImageView类别的图像

当我的应用程序加载时,我拉下了99个对象的JSON表示。 每个对象都有一个'image_url'字段,我传递给AFNetworking的setImageWithURLRequest 。 我的图像加载在一个tableView,因此,只有前几个单元格请求他们的图像。 直到我向下滚动,后续的图像请求才会完成。 一旦我拉下初始数据集,我希望能够启动一个后台进程,并下载最初不可见的95个对象,并caching它们,以便在调用setImageWithURLRequest时,它已经有一个caching的图像拉。 AFImageCache是​​私人的,所以我不知道这是可能的。 我知道我可以cachingNSURLCache,但是我会有两个单独的,孤立的caching,这也不是理想的。 我唯一的select不使用AFNetworking的UIImageView类别? 这些答案让我这么认为: 使用AFImageCachecaching图像似乎不起作用 如何使用AFNetworking的setImageWithURLconfigurationcaching

iOS 7:UITabBarItem徽章z-index

我想在selectionIndicatorImage上方显示一个UITabBarItem徽章。 有3个屏幕截图: 截图 浅灰色是selectionIndicatorImage 。 是的,徽章看起来不错。 当我在云端图标UITabBar里面变成: 这是错误的..我想在select图像上方显示徽章。 如果没有UITabBar图标 – 它看起来不错。 我该如何解决这个问题? 提前致谢。 编辑 我在故事板中添加了图标。 对于我制作的代码: UITabBarItem *cartTabBarItem = (UITabBarItem *)[self.tabBarController.tabBar.items objectAtIndex:3]; if ([[DataSourceWrapper getInstance] getFullCost] == 0) cartTabBarItem.badgeValue = nil; else cartTabBarItem.badgeValue = [NSString stringWithFormat:@"%.0f тнг", [[DataSourceWrapper getInstance] getFullCost]]; 对于selectionIndicatorImage [[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"selected-tabbar-bg.png"]];

UICollectionView数据源方法没有被调用,而是在init中设置

这是我的源代码 – (id)initWithCollectionView:(UICollectionView *)collectionView { self = [super init]; if (self) { self.collectionView = collectionView; self.collectionView.dataSource = self; self.collectionView.delegate = self; [self.collectionView registerClass:[TWNTweetCell class] forCellWithReuseIdentifier:kCell]; self.collectionViewLayout = self.collectionView.collectionViewLayout; self.tweetArray = @[]; self.tweetTextArray = @[]; self.twitter = [STTwitterAPI twitterAPIOSWithFirstAccount]; } return self; } #pragma mark – CollectionView #pragma mark DataSource -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 1; } […]