标签: uiviewanimation

UIButton中的动画图像

动画按钮图像的最佳方法是什么?

假设我想像6帧一样循环并让用户仍然可以点击按钮?

我应该为图像设置动画,并在界面构建器中只有一个隐形按钮吗?

有没有办法在定义中定义动画UIButton

或者是否更好地为图像设置动画并找到用户触摸点并对其进行操作?

xcode uibutton uiviewanimation ios

18
推荐指数
1
解决办法
9728
查看次数

如何正确设置UIScrollView contentOffset的动画

我有UIScrollView子类.它的内容是可重用的 - 大约有4或5个视图用于显示数百个元素(同时滚动隐藏的对象重用,并在需要查看它们时跳转到另一个位置)

我需要的是:能够自动滚动我的滚动视图到任何位置.例如,我的滚动视图显示第4,第5和第6个元素,当我点击某个按钮时,它需要滚动到第30个元素.换句话说,我需要UIScrollView的标准行为.

这很好用:

[self setContentOffset:CGPointMake(index*elementWidth, 0) animated:YES];
Run Code Online (Sandbox Code Playgroud)

但我需要一些定制.例如,更改动画持续时间,添加一些代码以在动画结束时执行.

明显的决定:

[UIView animateWithDuration:3 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
    [self setContentOffset:CGPointMake(index*elementWidth, 0)];
} completion:^(BOOL finished) {
    //some code
}];
Run Code Online (Sandbox Code Playgroud)

但我有一些动作连接到滚动事件,所以现在它们都在动画块中,它导致所有子视图的帧也动画(感谢几个可重复使用的元素,所有这些都不是我想要的动画)

问题是:我如何制作自定义动画(实际上我需要自定义持续时间,最后操作和BeginFromCurrentState选项)以进行内容偏移而不动画连接到scrollViewDidScroll事件的所有代码?

UPD: 感谢Andrew的回答(第一部分)我解决了内部动画的问题scrollViewDidScroll:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    [UIView performWithoutAnimation:^{
        [self refreshTiles];
    }];
}
Run Code Online (Sandbox Code Playgroud)

scrollViewDidScroll必须(为了我的目的)执行每一帧动画,就像它的情况一样

[self setContentOffset:CGPointMake(index*elementWidth, 0) animated:YES];
Run Code Online (Sandbox Code Playgroud)

但是,现在它只在动画开始时执行一次.

我怎么解决这个问题?

cocoa-touch uiscrollview uiview uiviewanimation ios

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

UIView animateWithDuration和UIProgressView setProgress

我希望UIProgressView在10秒内将我的进度从0变为1.

码:

[UIView animateWithDuration:10.0 animations:^{
    [_myProgressView setProgress:1 animated:YES];
} completion:(BOOL finished)^{
    if (finished) NSLog(@"animation finished);
}];
Run Code Online (Sandbox Code Playgroud)

动画工作正常,但完成后NSLog总是立即调用.

我试过animateWithDuration: withDelay:但延迟没有得到尊重并立即执行.

有谁遇到过同样的问题?

谢谢你的帮助.

objective-c uiprogressview uiviewanimation ios

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

Swift 2.0中的UIView.animateWithDuration?

在解释我的问题之前,重要的是要说我已经实现了这个问题中提出的建议,我认为我对这种animateWithDuration方法的怀疑是完全不同的,尽管两个问题的标题非常相似.

所以,我是一个Swift新手,我正在Swift做一些小项目,基于我以前做过的之前的Objective C演示.

这是我的Objective C代码:

- (void)moveSideBarToXposition: (int) iXposition{

    [UIView animateWithDuration:0.5f
                          delay:0.1
                        options: UIViewAnimationOptionTransitionNone
                     animations:^{  self.mainView.frame = CGRectMake(iXposition, 20, self.mainView.frame.size.width, self.mainView.frame.size.height); }

                     completion:^(BOOL finished){
                         if (self.isSidebarHidden==YES) {
                             self.isSidebarHidden = NO;
                         }

                         else{
                             self.isSidebarHidden = YES;
                         }
                     }];
}
Run Code Online (Sandbox Code Playgroud)

这是我的Swift版本:

func moveSideBarToXposition(iXposition: Float) {

    UIView.animateWithDuration(0.5, delay: 1.0, options: UIViewAnimationTransition.None, animations: { () -> Void in

        self.contentView.frame = CGRectMake(iXposition, 20, self.contentView.frame.size.width, self.contentView.frame.size.height)

    }, completion: { (finished: Bool) -> Void in

        if isMenuHidden == true {
            isMenuHidden = false …
Run Code Online (Sandbox Code Playgroud)

uiviewanimation ios swift xcode7 swift2

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

隐藏属性无法在动画块中更改

我在UIStackView中嵌入了两个UILabel.顶部标签始终可见,但底部标签通过hidden属性打开和关闭.我想要将此效果设置为动画,因此我将其粘贴在动画块中:

private func toggleResultLabel(value:Double) {
    if value == 0 {
        UIView.animateWithDuration(0.25) { () -> Void in
            self.resultLabel.hidden = true
        }
    } else {
        UIView.animateWithDuration(0.25) { () -> Void in
            // Something weird is happening. I had to add 3 of the same statements to get 
            // the hidden flag to be false
            self.resultLabel.hidden = false
            self.resultLabel.hidden = false
            self.resultLabel.hidden = false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是隐藏属性不会改变,除非我反复重复该语句(在这种情况下为3次).我在进入动画关闭时发现了这一点,并发现该属性不会改变它的赋值.现在我注意到看似随机发生的同样问题.true如果相关,则第二个标签的默认值为.

我在这里缺少什么,或者这是一个错误?

更新:为了它的价值,我通过添加removeArrangedSubview()以及addArrangedSubview():

if value == 0 …
Run Code Online (Sandbox Code Playgroud)

uiviewanimation ios swift

18
推荐指数
4
解决办法
1763
查看次数

Swift 3 UIView动画

由于将我的项目升级到swift 3,我的自动布局约束动画无法正常工作; 更具体地说,他们正在抢购新职位而不是动画.

UIView.animate(withDuration: 0.1,
               delay: 0.1,
               options: UIViewAnimationOptions.curveEaseIn,
               animations: { () -> Void in
                   constraint.constant = ButtonAnimationValues.YPosition.DefaultOut()
                   self.layoutIfNeeded()
    }, completion: { (finished) -> Void in
    // ....
})
Run Code Online (Sandbox Code Playgroud)

我知道他们增加了UIViewPropertyAnimator课程,但还没有尝试.

uiview uiviewanimation ios swift swift3

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

动画UICollectionView的框架和布局更改

我正在尝试创建一个效果,我在更改帧大小时更改我的UICollectionView的布局

最初,collectionView布局在整个屏幕上呈现"缩略图"库样式.

在将框架尺寸调整为细条后 - 我想呈现"电影条"风格的布局

两种布局都可以独立工作,并且符合预期.

我尝试过类似的代码:

[UIView animateWithDuration:1
                          delay:0.0
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^{
                         self.collectionview.frame = newFrame; // animate the frame size


                     }
                     completion:^(BOOL finished) {
                        [self.collectionView.collectionViewLayout invalidateLayout];

    [self.collectionView setCollectionViewLayout:filmstriplayout animated:YES];    // now set the new layout
                     }];
Run Code Online (Sandbox Code Playgroud)

但它看起来非常不稳定,没有按预期调整大小.

有没有办法在动画更改的同时更改集合视图布局和帧大小?

uiviewanimation ios uicollectionview uicollectionviewlayout

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

在动画中的SubView幻灯片,iphone

我有一个包含两个UIButtons的UIview.

-(void)ViewDidLoad
{
    geopointView = [[UIView alloc] initWithFrame:CGRectMake(0, 350, 120, 80)];
    geopointView.backgroundColor = [UIColor greenColor]; 

    UIButton *showGeoPointButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
    showGeoPointButton.frame = CGRectMake(0, 0, 120, 40);
    showGeoPointButton.titleLabel.font = [UIFont systemFontOfSize:13.0];
    [showGeoPointButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[showGeoPointButton addTarget:self action:@selector(showPlaces:) forControlEvents:UIControlEventTouchUpInside];

    UIButton *SaveButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain] 
    SaveButton.frame = CGRectMake(0, 40, 120, 40);
    SaveButton.titleLabel.font = [UIFont systemFontOfSize: 15.0];
    [SaveButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [SaveButton addTarget:self action:@selector(savePlacePopUp) forControlEvents:UIControlEventTouchUpInside];

    [geopointView addSubview:showGeoPointButton];
    [geopointView addSubview:SaveButton];
}
Run Code Online (Sandbox Code Playgroud)

我想在调用以下方法时为UIview中的幻灯片设置动画.

-(void) showAnimation
Run Code Online (Sandbox Code Playgroud)

我试着通过以下方式来做,但我看不到动画.我该怎么做?

-(void) showAnimation{
    [UIView animateWithDuration:10.0 animations:^{
        [self.view addSubview:geopointView]; …
Run Code Online (Sandbox Code Playgroud)

iphone uiviewanimation ios

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

UIView动画块:如果持续时间为0,是否与没有动画相同?

我需要处理一个案例,你可以做一些有或没有动画的事情,而不是:

if (animation)
{
    [UIView animateWithBlock:^(){...}];
}
else
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想要做:

[UIView animateWithBlock:^(){...} duration:(animation ? duration : 0)]
Run Code Online (Sandbox Code Playgroud)

但不确定它是否有效,即使它确实如此,是否有使用它的开销而不是直接更改视图?

谢谢

objective-c uiview uiviewanimation ios

15
推荐指数
3
解决办法
5156
查看次数

动画导航栏标题文本更改

在我的应用程序中,我有一个页面视图控制器,允许用户在应用程序的不同"部分"之间滑动,并在导航栏的顶部我将标题文本更改为用户通过刷过的新部分pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:.当动画完成时,它当前正在立即更改标题文本.我想通过一些动画改进这一点,一种微妙的淡入淡出效果.

我首先尝试实现[UIView animationWithDuration:...]动画更改标题文本,但它不动画,只是仍然立即更新.

然后我想知道是否有可能更新导航栏标题的alpha,因为用户根据他们滚动的距离水平滚动,当下一部分即将出现在屏幕上时达到0 alpha,然后我可以立即在文本处于0时更改文本,然后快速淡入1 alpha.但是UIPageViewControllerDelegate当滚动位置更新时,我没有看到调用方法.

如果可能的话,我不仅可以淡入淡出,而且可以在导航栏中移动标题文本位置,就像通过滑动手势从推送segue导航回来时发生的默认动画一样.当用户滚动并在另一侧提供下一部分标题时,我会将旧部分标题滑过,这样当转换完成时,前一部分标题不在屏幕上,新的标题完全居中,因此替换完成.但同样需要确切知道用​​户滚动页面视图控制器的程度.

是否可以实现任何所需的动画?

animation objective-c uinavigationbar uiviewanimation ios

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