小编Mar*_*man的帖子

如何使用Core Animation创建自定义缓动功能?

我在iOS中很好地CALayer使用CGPath(QuadCurve)动画.但是我想使用一个比Apple 提供的更有趣的缓动功能(EaseIn/EaseOut等).例如,弹跳或弹性功能.

这些东西可以与MediaTimingFunction(bezier)一起使用:

在此输入图像描述

但我想创建更复杂的计时功能.问题是媒体时间似乎需要一个立方贝塞尔,它不足以产生这些效果:

http://wiki.sparrow-framework.org/_media/manual/transitions.png

代码创建上面是很简单的在其他框架中,这使得这个非常令人沮丧.请注意,曲线是将输入时间映射到输出时间(Tt曲线)而不是时间 - 位置曲线.例如,easeOutBounce(T)= t返回一个新的t.然后该t用于绘制运动(或任何我们应该动画的属性).

所以,我想创建一个复杂的自定义,CAMediaTimingFunction但我不知道如何做到这一点,或者甚至可能吗?还有其他选择吗?

编辑:

这是步骤的具体示例.很有教育意义

  1. 我想沿着从a点到b点的直线设置对象的动画,但我希望它使用上面的easeOutBounce曲线沿着直线"反弹"它的移动.这意味着它将遵循从ab的精确线,但是将以比使用当前基于bezier的CAMediaTimingFunction更复杂的方式加速和减速.

  2. 让我们使用CGPath指定任意曲线移动.它应该仍然沿着该曲线移动,但它应该以与线示例中相同的方式加速和减速.

从理论上讲,我认为它应该像这样工作:

让我们将运动曲线描述为关键帧动画移动(t)= p,其中t是时间[0..1],p是在时间t计算的位置.因此,move(0)返回曲线开始处的位置,移动(0.5)精确中间并移动(1)结束.使用定时功能时间(T)= t来提供移动t值应该给我想要的东西.对于弹跳效果,定时功能应该返回相同的时间(0.8)时间(0.8)的t值(仅作为示例).只需更换计时功能即可获得不同的效果.

(是的,可以通过创建和连接来回的四个线段进行线条弹跳,但这不是必需的.毕竟,它只是一个简单的线性函数,它将时间值映射到位置.)

我希望我在这里有意义.

iphone cocoa-touch core-animation tween

111
推荐指数
4
解决办法
5万
查看次数

如何简化表单验证?

下面的代码似乎非常适合进行基本的必需表单验证.

当字段脏了+无效时,表单显示一个红色名称是必需的消息!如果字段为脏+有效,则显示消息.

但是对于表单中的每个字段重复此代码都是一团糟:

<form name="myForm">
    <div class="control-group" 
     ng-class="{error: myForm.name.$invalid && myForm.name.$dirty}">
        <label>Name:</label>
        <input type="text" name="name" ng-model="user.name" required/>
        <span ng-show="myForm.name.$invalid && myForm.name.$dirty" 
            class="help-inline">Name is required</span>
        <span ng-show="myForm.names.$valid && myForm.names.$dirty">Great!</span>
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

我希望能够以更简单的方式指定ng-showng-class属性.

angularjs

28
推荐指数
3
解决办法
4万
查看次数

如何将xml属性添加到jaxb带注释的类XmlElementWrapper?

我有一个带有XmlElementWrapper注释的类,如:

...

  @XmlElementWrapper(name="myList")
    @XmlElements({
    @XmlElement(name="myElement") }
    )
    private List<SomeType> someList = new LinkedList();
Run Code Online (Sandbox Code Playgroud)

...这段代码生成XML

<myList>
  <myElement> </myElement>
  <myElement> </myElement>
  <myElement> </myElement>
</myList>
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

但是现在我需要在list标签中添加属性以获得XML

<myList number="2">
  <myElement> </myElement>
  <myElement> </myElement>
  <myElement> </myElement>
</myList>
Run Code Online (Sandbox Code Playgroud)

有没有一种'聪明的方法来实现这一目标而不创建一个包含代表列表的新类?

xml annotations linked-list jaxb

24
推荐指数
2
解决办法
6万
查看次数

释放GCD调度队列属性的正确方法是什么?

我正在使用dispatch_queue,它通过其所有者的属性访问,如下所示:

@property (nonatomic, assign) dispatch_queue_t queue;
Run Code Online (Sandbox Code Playgroud)

注意assign关键字.队列在整个对象生命周期中使用,因此由对象拥有.我取消分配拥有对象时释放队列:

-(void)dealloc
{
    dispatch_release(self.queue);
    self.queue = nil;
}
Run Code Online (Sandbox Code Playgroud)

我该如何正确发布?会用到retain/release工作吗?

如果在调用release时队列中有待处理/正在运行的东西,会发生什么?

memory-management objective-c grand-central-dispatch

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

如何可靠地找到UIGestureRecognizer的正确视图?

我有一堆UIViews,如下图所示.红色/粉红色(半透明)视图位于其他视图之上.

  • 红有一个UISwipeGestureRecognizer.
  • 格林有一个UITapGestureRecognizer.
  • 蓝没有识别器.

在此输入图像描述

点击绿色的可见(左下)部分会触发其识别器.

点击绿色的隐藏部分不会触发其识别器(红色阻止它).

这就是问题:我希望Green能够触发.我怎样才能做到这一点?

在实践中,视图可以是任何顺序,任何数字和彼此的子视图等.但问题是相同的:

如何可靠地找到可以处理手势的最上面的视图(点击或滑动)?


我试过下面的代码.它整齐地遍历所有视图,但它失败了,因为它无法知道事件是否是滑动或点击的一部分.因此该方法始终返回红色视图.如果我从Red中删除滑动识别器,则代码可以正常工作.

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{
    UIView *hitView = [super hitTest:point withEvent:event];
    if (hitView == self)
    {
        if (self.hasASwipeRecognizer)
            return self;  // What if this was a tap?
        if (self.hasATapRecognizer)
            return self; 
        else
            return nil;
    }
    else
         return hitView;
 }
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch uiview uigesturerecognizer

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

如何使用 Bicep(或 ARM)创建 AD 应用程序注册和角色?

我正在使用 Terraform 为我们的应用程序创建应用程序注册和角色。但我不知道如何对二头肌做同样的事情。这是今天使用的:

步骤 1. 在 Active Directory 中注册应用程序,有效创建“应用程序注册”。

resource "azuread_application" "ad_app" {
  name                        = local.full_app_name
  type                        = "webapp/api"
  owners                      = var.app_owners
}
Run Code Online (Sandbox Code Playgroud)

第 2 步:为我们的应用程序创建角色

resource "azuread_application_app_role" "person_read" {
  application_object_id = azuread_application.ad_app.id
  allowed_member_types  = ["Application"]
  description           = "Person Reader can search and read persons"
  display_name          = "Person Reader"
  value = "Persons.Read"
}
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何使用 Bicep(或 ARM 模板)执行这些步骤。我尝试过'Microsoft.Authorization/roleDefinitions',但似乎不对。我不知道如何进行应用程序注册。

azure-active-directory terraform azure-rm-template azure-bicep

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

NSBundle pathForResource返回带有子目录的nil

例如,我的应用程序中有一堆目录和文件images/misc/mainmenu_background..我在"iPad模拟器3.2"中运行以下代码:

NSString *images = [[NSBundle mainBundle] pathForResource:@"images" ofType:nil];
NSString *images_misc = [[NSBundle mainBundle] pathForResource:@"images/misc" ofType:nil];
NSString *images_misc_file = [[NSBundle mainBundle] pathForResource:@"images/misc/mainmenu_background.png" ofType:nil];
Run Code Online (Sandbox Code Playgroud)

在此调用之后,images包含路径/Users/wic/Library/Application Support/iPhone Simulator/3.2/Applications/8F67150B-71E6-4735-8CC6-38B3CE6D3568/Foo.app/images.

但是images_misc,images_misc_filenil.仔细检查我的文件系统以检查文件是否存在:

$ ls -l "/Users/wic/Library/Application Support/iPhone Simulator/3.2/Applications/8F67150B-71E6-4735-8CC6-38B3CE6D3568/Foo.app/images/misc/mainmenu_background.png"
-rw-rw-rw-  1 wic  staff  30307 16 Feb 21:09 /Users/wic/Library/Application Support/iPhone Simulator/3.2/Applications/8F67150B-71E6-4735-8CC6-38B3CE6D3568/Foo.app/images/misc/mainmenu_background.png
Run Code Online (Sandbox Code Playgroud)

显然文件就在那里.

如果我切换到"iPad模拟器4.0",或任何其他模拟器版本的一切都按预期工作.

我的设置有问题,或者NSBundle在iPad 3.2中这是正确的行为吗?不幸的是,我没有真正的物理iPad来测试它.

xcode nsbundle ios-simulator

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

使用Gson添加现有的json字符串

我有一个包含一些任意json的String对象.我想将它包装在另一个json对象中,如下所示:

{
   version: 1,
   content: >>arbitrary_json_string_object<<
}
Run Code Online (Sandbox Code Playgroud)

如何可靠地将我的json字符串作为属性添加到它而不必手动构建它(即避免繁琐的字符串连接)?

class Wrapper {
   int version = 1;
}

gson.toJson(new Wrapper())
// Then what?
Run Code Online (Sandbox Code Playgroud)

请注意,新增JSON应该没有逃脱,但被包装为一个有效的JSON实体,像这样的一部分:

{
   version: 1,
   content: ["the content", {name:"from the String"}, "object"]
}
Run Code Online (Sandbox Code Playgroud)

特定

String arbitraryJson = "[\"the content\", {name:\"from the String\"}, \"object\"]";
Run Code Online (Sandbox Code Playgroud)

java json gson

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

如何在Magento 2中显示静态块?

我正在创建一个magento 2主题.我想在cms主页上显示自定义块.

我想知道在phtml和xml布局中显示静态块,cms页面内容

我能怎么做?

php magento2

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

如何在带有CGGradient的NSArray中轻松使用CGColor

我有两个UIColor实例,并希望使用它们创建一个渐变.代码有效,但是当我调用arrayWithObject:构造函数时它会给我一个警告:

警告:语义问题:不兼容的指针类型将'CGColorRef'(又名'struct CGColor*')发送到'id'类型的参数

我怀疑那里潜藏着与警告相关的其他问题(例如泄漏).这是片段:

   UIColor *startColor, *endColor; 
   // ...
   NSArray *colors = [NSArray arrayWithObjects:
                      startColor.CGColor, endColor.CGColor, nil];
   CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, 
                     (CFArrayRef) colors, NULL);
Run Code Online (Sandbox Code Playgroud)

如何重写代码以安全的方式摆脱这个警告?

  • 我尝试手动创建一个CGArrayRef,但一段时间后有点讨厌.
  • CGGradientCreateWithColorComponents工作,但我不喜欢手动将所有颜色组件合并为一个CGFloat components[]

iphone uicolor nsarray ios

10
推荐指数
1
解决办法
7206
查看次数