小编Raf*_*fAl的帖子

SKSpriteNode在随机路径上的平滑运动

我正在做一个小SpriteKit游戏.我想让这个游戏中的"敌人"在玩家周围的随机路径上移动(这是静态的).

如果我只是在屏幕上选择一个随机点并将动画设置为动画然后重复(例如:每2秒),这将给动作带来非常锯齿状的感觉.

如何使这个随机运动非常平滑(例如:如果敌人决定转身,它将在平滑的U转弯路径上而不是锯齿状的锐角).

PS:敌人必须避免玩家和对方.

random objective-c ios sprite-kit

4
推荐指数
1
解决办法
4046
查看次数

自定义类未在故事板身份检查器中显示

我在我的应用程序中创建了一个名为的新类EmpresasTableViewController,并在我复制CategoriasViewController到EmpresasTableViewController 的故事板中,我只想将类分配EmpresasTableViewControllerEmpresasTableViewController故事板中,但名称EmpresasViewController不会出现在Identity Inspector.

创建类后没有错误,但为什么它没有在故事板Identity Inspector下显示为Custom Class?,显示所有其他视图控制器.

cocoa-touch objective-c storyboard ios

4
推荐指数
1
解决办法
5029
查看次数

使用CGAffineTransformScale自定义UIView缩放

我学着开发iOS和教育过程的一部分,我已创建自定义的UIView,它使用drawRect绘制它的内容(核芯显卡+ UIBezierPath为主).Everthing按预期工作,视图是动态的,并根据它的宽度/高度呈现它的内容.现在我想添加溶解动画,看起来应该从100%缩放到0%.我写了这段代码来做到这一点:

[UIView animateWithDuration:1 delay:0
                options: UIViewAnimationOptionBeginFromCurrentState
             animations: ^{
     for (CardView *cardView in self.cardsViews) {
         cardView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.01, 0.01);

     }} completion:nil];
Run Code Online (Sandbox Code Playgroud)

但是,此代码不会将我的视图从100%缩放到0%.它只是使卡片消失(最多).我已经尝试了很多方法来进行缩放,但到目前为止我所达到的效果只是从0%缩放到100%.我的观点完美,但不能反向缩放...而且,即使我尝试应用非动画变换,它也不会向上/向下缩放,例如:

cardView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.5, 0.5);
Run Code Online (Sandbox Code Playgroud)

我看到我的视图看起来改变了A BIT,但没有扩展到50%,这是肯定的.当我尝试将完全相同的动画逻辑应用于UILabel时,它完美运行!我错过了开发自定义UIView的哪些方面?缩放视图为何可能出现故障 非常感谢提前!

更新#1此代码使我的视图正好大两倍,然后将其缩放回原始大小:

[UIView animateWithDuration:5 delay:0
                    options: UIViewAnimationOptionBeginFromCurrentState
                 animations: ^{
         for (CardView *cardView in self.cardsViews) {
             cardView.transform = CGAffineTransformMakeScale(0.5, 0.5);
         }
    } completion:nil];
Run Code Online (Sandbox Code Playgroud)

transformation uiview ios

4
推荐指数
1
解决办法
7160
查看次数

如何创建一个随机闭合的平滑CGPath?

我试图找到一种方法来创建一个随机的闭合平滑路径(CGPathUIBezierPath).我已经阅读了关于De Casteljau的算法以及关于Bezier路径的其他文章,但它似乎不适合我试图实现的目标.

我想过创建一个CGPath圆圈.然后我会通过一个函数来增加路径,这个函数会扭曲点的位置,比如正弦或余弦.但是我不知道这是否是正确的方向,因为路径不会有随机的形状.

CGMutablePathRef circle = CGPathCreateMutable();
CGPathAddArc(circle, nil, 0.0f, 0.0f, 100.0f, 2 * M_PI, 0.0f, true);
...
CGPathRelease(circle);
Run Code Online (Sandbox Code Playgroud)

如果有人能指出我正确的方向如何开始实施它将是伟大的.我尝试生成的路径示例:

在此输入图像描述

cocoa-touch objective-c cgpath ios uibezierpath

4
推荐指数
1
解决办法
1790
查看次数

将视图控制器嵌套在故事板中

我正在学习如何使用故事板进行iOS开发,我似乎无法弄清楚如何在同一屏幕上管理多个视图.

我希望能够控制在同一屏幕上的多个元素,例如UITableViewUIImageView旁边.

这意味着我需要3,1 UIViewControllersUITableView1,1 UIImageView为主视图,1 为主视图.但据我所知,故事板只允许每个视图层次结构屏幕有1个控制器.谁能告诉我我错过了什么?

objective-c viewcontroller ios

4
推荐指数
1
解决办法
3419
查看次数

UICollectionView中只有一个粘性标头

我正在尝试在一个中实现一个粘性标头UICollectionView.

我的粘性标题行为与您可以看到的通常情况略有不同,例如UITableView.我在集合视图中有3个标题,我希望其中只有一个是粘性的,并在滚动内容时粘在顶部.

我的代码工作得很好.但是,当我向下滚动时,粘性标题会在某个时刻突然消失.向后滚动会使标题再次出现.我究竟做错了什么?

我附加了自定义布局的实现.它是的子类UICollectionViewFlowLayout.

@implementation CustomFlowLayout


- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
    NSMutableArray *attributes = [[super layoutAttributesForElementsInRect:rect] mutableCopy];
    CGPoint const contentOffset = self.collectionView.contentOffset;

    for (UICollectionViewLayoutAttributes *layoutAttributes in attributes)
    {
        // Adjust the sticky header frame.
        if ([layoutAttributes.representedElementKind isEqualToString:UICollectionElementKindSectionHeader] &&
            layoutAttributes.indexPath.section == SectionWithStickyHeadeIndex)
        {
            NSInteger numberOfItemsInSection = [self.collectionView numberOfItemsInSection:SectionWithStickyHeadeIndex];
            NSIndexPath *firstObjectIndexPath = [NSIndexPath indexPathForItem:0
                                                                    inSection:SectionWithStickyHeadeIndex];
            UICollectionViewLayoutAttributes *firstObjectAttrs;

            if (numberOfItemsInSection > 0)
            {
                firstObjectAttrs = [self layoutAttributesForItemAtIndexPath:firstObjectIndexPath];
            }
            else
            {
                firstObjectAttrs = [self layoutAttributesForSupplementaryViewOfKind:UICollectionElementKindSectionHeader
                                                                        atIndexPath:firstObjectIndexPath];
            } …
Run Code Online (Sandbox Code Playgroud)

objective-c ios uicollectionview

4
推荐指数
1
解决办法
1189
查看次数

NS_BLOCK_ASSERTIONS是否同时禁用NSAssert和assert()调用?

是否NS_BLOCK_ASSERTIONS仅关闭NSAssert呼叫或assert()呼叫.我的应用程序在assert(...)声明行的发布模式下崩溃.

文档仅说明NSAssert并且不会告知assert()呼叫是否被禁用.

有几个与我有关的问题没有回答.我在这里链接他们:

Objective-C中的NS_BLOCK_ASSERTIONS
NSAssert与断言:您使用哪种,何时使用?
如何知道在发布版本中是否禁用了NSAssert?

iphone objective-c ios

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

绘制UIBezierPath时出错.没有当前的观点

我正在创建UIBezierPath这样的:

UIBezierPath *path = [UIBezierPath bezierPath];

[path addLineToPoint:CGPointMake(200.0, 40.0)];
[path addLineToPoint:CGPointMake(160, 140)];
[path addLineToPoint:CGPointMake(40.0, 140)];
[path addLineToPoint:CGPointMake(0.0, 40.0)];
[path closePath];
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试绘制我的时UIBezierPath,它不会出现,我收到一个错误:

<Error>: void CGPathCloseSubpath(CGMutablePathRef): no current point.
Run Code Online (Sandbox Code Playgroud)

我的绘图代码非常基本:

UIGraphicsBeginImageContext(self.view.bounds.size);

[[UIColor whiteColor] set];
[myPath stroke];

UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

objective-c ios

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

如何在Sprite Kit中预加载纹理?

我的节点上有几帧动画,第一次播放动画时它会滞后,fps下降.每次下次都很好,花花公子.

如何预加载纹理以使其工作顺畅?

我加载游戏时运行此方法:

- (void)load
{
    self.animationFrames = @[[SKTexture textureWithImageNamed:@"exp1"], [SKTexture textureWithImageNamed:@"exp2"],
                             [SKTexture textureWithImageNamed:@"exp3"], [SKTexture textureWithImageNamed:@"exp4"], [SKTexture textureWithImageNamed:@"exp5"], [SKTexture textureWithImageNamed:@"exp6"], [SKTexture textureWithImageNamed:@"exp7"], [SKTexture textureWithImageNamed:@"exp8"], [SKTexture textureWithImageNamed:@"exp9"]];
}
Run Code Online (Sandbox Code Playgroud)

而这种播放动画的方法:

-(void)playExplosionAnimation
{
    self.size = CGSizeMake(250, 250);
    SKAction *animation = [SKAction animateWithTextures:self.animationFrames timePerFrame:0.1];

    [self runAction:animation completion:^{
        self.hidden = YES;
    }];
}
Run Code Online (Sandbox Code Playgroud)

textures ios sprite-kit

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

是否可以定位地图视图,使用户的当前位置不在视图的中心?

我正在视图中绘制一个覆盖整个设备屏幕空间的地图.

在该视图的顶部是占据屏幕下半部分的另一视图.顶视图是半透明的,因此用户可以看到它下面的覆盖地图.

在地图中,我显示用户的当前位置.

地图视图自动定位地图,使得用户的位置在视图中居中 - 因此是设备屏幕的中心,但是中心也被顶视图覆盖.

但是我希望用户的位置在地图视图中未被顶视图覆盖的部分中居中.

mkmapview ios

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