我正在尝试在名为addToPlaylist和removeFromPlayList的UITableViewCell中设置2个UIButton(在刷卡后将它们设置为向右动画)并使用块如下
[UIView animateWithDuration:0.25 animations:^{
self.addToPlaylist.center = CGPointMake(contentsSize.width + (buttonSize.width / 2), (buttonSize.height / 2));
self.removeFromPlaylist.center = CGPointMake(contentsSize.width + (buttonSize.width / 2), (buttonSize.height / 2));
myImage.alpha = 1.0;
}
completion:^ (BOOL finished)
{
if (finished) {
// Revert image view to original.
NSLog(@"Is completed");
self.addToPlaylist.hidden = YES;
self.removeFromPlaylist.hidden = YES;
self.hasSwipeOpen = NO;
}
}];
完成后我想隐藏按钮以尝试减少重绘滚动等。
此代码位于' - (void)swipeOff'中,在UITableViewControllers方法中调用scrollViewWillBeginDragging,如下所示:
- (void)scrollViewWillBeginDragging:(UIScrollView *) scrollView
{
for (MediaCellView* cell in [self.tableView visibleCells]) {
if (cell.hasSwipeOpen) {
[cell swipeOff];
}
}
}
问题是完成代码,如果我删除它或将其设置为nil都是好的,如果我包含它我得到一个EXC_BAD_ACCESS。即使我将其包含在if(已完成)注释掉的
中的任何或所有行中我是以错误的方式使用它,任何帮助都非常感激。
由于
答案 0 :(得分:20)
我对动画有同样的问题。我已经通过从其他链接器标志中删除-weak_library /usr/lib/libSystem.B.dylib
来解决它。
此外,根据this answer,如果您需要此标记,则可以将其替换为-weak-lSystem
。
答案 1 :(得分:0)
检查是否不从UIView块内部调用UIView(collectionView,Mapview等),这意味着它将是在主线程之外进行的调用。如果是这样,请尝试以下操作:
DispatchQueue.main.async {
self.mapBoxView.setZoomLevel(self.FLYOVERZOOMLEVEL, animated: true
)}