小编NKo*_*kov的帖子

iOS UITableViewCell setSelected:animated:总是动画= NO

我正在尝试制作自己的选择动画.我已经创建了UITableViewCell的子类.我在-setSelected:animated:方法中做我的选择动画.当您通过点击它们来选择或取消选择单元格时,它可以按预期工作.问题是在滚动期间也会看到动画,因为-setSelected:animated:在每个单元出现之前会调用它.这就是重用细胞机制的工作方式,我明白了.我没有得到的是它总是在动画= NO时调用此方法,无论是点击还是滚动.这对我来说似乎是一个逻辑错误.我推测当你点击它们时应该选择带有动画的单元格,而当重复使用单元格出现时没有动画.是animated参数甚至曾经在任何地方使用,除了人工电话吗?这是我的代码:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

    BOOL alreadySelected = (self.isSelected) && (selected);
    BOOL alreadyDeselected = (!self.isSelected) && (!selected);

    [super setSelected:selected animated:animated];

    if ((alreadySelected) || (alreadyDeselected)) return;

    NSLog(@"Animated selection: %@", animated ? @"YES" : @"NO");

    NSTimeInterval duration;

    if (animated) {

        duration = 0.25;

    } else {

        duration = 0.0;

    }

    [CATransaction begin];
    [CATransaction setAnimationDuration:duration];

    if (selected) {

        //layer properties are changed here...


    } else {

        //layer properties are changed here... 

    }


    [CATransaction commit];


}
Run Code Online (Sandbox Code Playgroud)

这总是没有动画.我想不出任何其他如此简单的方法来处理自定义选择. …

animation objective-c uitableview ios

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

从 Objective-c 项目访问时找不到某些 Swift 类属性

我正在尝试将一些 Swift 代码引入我的旧 obj-c 项目中。Swift 类可以从 obj-c 类访问,但不是它的所有属性。例如

public var menuTitleColor: UIColor!
Run Code Online (Sandbox Code Playgroud)

工作得很好,但是

public var cellHeight: CGFloat!
Run Code Online (Sandbox Code Playgroud)

没有找到。我认为这是因为 CGFloat 不是一个对象。有没有办法在不更改 Swift 文件的情况下访问此属性?

objective-c swift

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

增加 macOS 上浮动缩略图屏幕截图预览的持续时间

因此,在几个最新的 macOS 版本上有这些有用的浮动预览。但我似乎找不到任何方法来增加预览的持续时间(默认为 5 秒)。有可能吗?当我寻找一个窗口将其放下时,它常常会滑走。这非常令人沮丧。

在此输入图像描述

macos screenshot duration thumbnails preview

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

使用CAShapeLayer动画的iOS"擦除"绘图

我正在尝试实现一个循环指示器,随着值的变化,它会自动绘制动画.

我用CAShapeLayer画画动画.到目前为止,我每次都从头开始绘制它,它按预期工作.现在我想让它更圆滑并向前绘制并"擦除",具体取决于新值是否大于或低于之前的值.我不确定如何实现擦除部分.有一个背景所以我不能只用白色画在上面.这是一张图片,可以更好地了解它的外观.

循环指标

有关如何实现擦除部分的任何想法?在类似的问题上有一些关于SO的解决方案,但那些涉及没有动画.

我使用此代码绘制:

- (void)drawCircleAnimatedWithStartAngle:(CGFloat)startAngle
                            endAngle:(CGFloat)endAngle
                               color:(UIColor *)color
                              radius:(int)radius
                           lineWidth:(int)lineWidth {


CAShapeLayer *circle = [CAShapeLayer layer];
circle.name = @"circleLayer";

    circle.path = ([UIBezierPath bezierPathWithArcCenter:CGPointMake(radius, radius) radius:radius-1 startAngle:startAngle endAngle:endAngle clockwise:YES].CGPath);

// Configure the apperence of the circle
circle.fillColor = [UIColor clearColor].CGColor;
circle.strokeColor = [UIColor colorWithRed:19.0/255 green:167.0/255 blue:191.0/255 alpha:1].CGColor;
circle.lineWidth = lineWidth;

// Add to parent layer
for (CALayer *layer in self.circleView.layer.sublayers) {
    if ([layer.name isEqualToString:@"circleLayer"]) {
        [layer removeFromSuperlayer];
        break;
    }
}

[self.circleView.layer addSublayer:circle];
circle.zPosition = 1;


// Configure animation …
Run Code Online (Sandbox Code Playgroud)

animation drawing cashapelayer ios

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

UIView transitionWithView:具有背景颜色的动画行为

我已经设置了一个简单的项目来试验UIView transitionWithView:动画片段并遇到了相当奇怪的行为.

在此输入图像描述

动画只能用于标签的文本(在视图中途旋转时更改它),但颜色更改发生在动画结束时,呵呵.有没有办法在动画中途使用这种动画来改变背景颜色(图像?)?我可以用Core Animation自己构建类似的东西,但我不想重新发明轮子.我觉得我只是没有正确使用这种方法

整个示例代码:

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *containerView;
@property (weak, nonatomic) IBOutlet UIView *innerView;
@property (weak, nonatomic) IBOutlet UILabel *label;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.innerView.layer.cornerRadius = 25.0;
    // Do any additional setup after loading the view, typically from a nib.
}

- (UIColor *)randomColor {

    CGFloat hue = ( arc4random() % 256 / 256.0 );  
    CGFloat saturation = ( arc4random() % 128 / 256.0 ) + …
Run Code Online (Sandbox Code Playgroud)

animation core-animation objective-c uiviewanimation ios

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

Cocoapods"pod install"卡在OS X El Capitan上

在更新到最新的OS X El Capitan后,我遇到了与其他许多人一样的cocoapods问题:

-bash: pod: command not found
Run Code Online (Sandbox Code Playgroud)

我跑去sudo gem install cocoapods重新安装cocoapods,它解决了上述问题:

Successfully installed cocoapods-0.38.2
Parsing documentation for cocoapods-0.38.2 1 gem installed
Run Code Online (Sandbox Code Playgroud)

Pod命令现在有效.但当我尝试pod install --verbose它被卡住时:

Preparing

Updating local specs repositories

Updating spec repo `master`
  $ /usr/bin/git pull --ff-only
Run Code Online (Sandbox Code Playgroud)

我已经尝试卸载我能找到的所有cocoapods组件 gem list --local | grep cocoapods并重新安装cocoapods.没有帮助.我该怎么办?

ruby cocoapods osx-elcapitan

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

iOS解决方案只有在尚未使用SDWebImage在内存中缓存时才能使用动画加载图像

我几天来一直在努力解决这个问题.以前我使用AFNetworking类来加载和缓存图像,但它没有在它的回调中提供缓存类型.所以我曾经在每个控制器中跟踪哪些图像已经加载.我浏览了SDWebImage,它提供了我正在寻找的东西 - SDImageCacheType.

现在我试图想出一个易于使用(希望是一个单行)的解决方案来加载表格和集合视图中的图像,如果它们被下载或来自磁盘缓存.基本上这些任务需要一些时间才能获得实际图像,当内存缓存瞬间提供图像时,因此当图像来自内存时不需要动画.

我想出了这个UIImageView类别,我希望有更有经验的人提供一些反馈.它确实似乎按预期工作.我不确定我是在这里重新发明轮子,否则这种做法在某些情况下可能会适得其反.

概述是做两件事.在完成块中,当图像准备好使用时,它根据已使用的缓存级别设置动画持续时间.第二个想法是可重复使用的单元机制,imageView在相关对象的帮助下跟踪加载操作,如果有正在进行的任务则取消它.AFNetworking解决方案不需要这样做,因为当您设置新的解决方案时,它会默认取消正在进行的图像加载.我不喜欢这样的事实,即操作被保留,它不应该被保留,但是关联的对象不提供一种__weak类型的引用.OBJC_ASSOCIATION_ASSIGNkey似乎会产生对象__unsafe_unretained并导致访问崩溃.

任何意见,将不胜感激.

static char kOperationKey;

- (id <SDWebImageOperation>)scrb_setImageAnimatedWithURL:(NSURL *)url {

    id <SDWebImageOperation> lastOperation = objc_getAssociatedObject(self, &kOperationKey);

    if (lastOperation) {
        [lastOperation cancel];
    }

    id <SDWebImageOperation> operation = [[SDWebImageManager sharedManager] downloadImageWithURL:url options:SDWebImageRetryFailed progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {

        if (finished && image) {

            BOOL animated = NO;

            if (cacheType == SDImageCacheTypeDisk || cacheType == SDImageCacheTypeNone) {
                animated = YES;
            }

            if (animated) {

                [UIView …
Run Code Online (Sandbox Code Playgroud)

caching uiimageview ios sdwebimage

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

iOS检查UINavigationController中是否显示Back Button

在iOS项目中,我需要检查当前是否显示后退按钮.我已经尝试过在SO上提供的一些解决方案,但它们都没有为我工作.目前我正在使用此代码

NSArray *stack = navigationController.viewControllers;
int i = stack.count-2;

if (i>=0)
{
    UIViewController *backVC = (UIViewController*)[stack objectAtIndex:i];
    if (backVC.navigationItem.backBarButtonItem != nil) {
        NSLog(@"Back button is displayed!");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是日志中没有任何内容.如果我正确理解苹果指南,我正在寻找位于堆栈索引n-2的ViewController,ViewController应该保持一个后退按钮.

我在-navigationController中使用此代码:willShowViewController:animated:

uinavigationcontroller ios

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