objective-c - 为 UIView 设置动画并将圆角半径保持为圆形

标签 objective-c uiview

我有一个圆圈 UIView :

  con=[[UIView alloc] initWithFrame:CGRectMake(self.frame.size.width-size-delta, y , size, size)];
    con.layer.borderColor=[UIColor whiteColor].CGColor;
    con.layer.borderWidth=1.0;
    con.backgroundColor=[UIColor clearColor];
    con.layer.cornerRadius=con.frame.size.width/2.0;
    con.clipsToBounds=YES;
    [self addSubview:con];

稍后我想将它的大小更改为更大的,但是当我这样做时,在动画开始时您会看到一些矩形,然后它又变回圆形。

我想要一个平面动画,当它的帧发生变化时它会保持为一个圆圈。

   CGRect frm=startConfrm; //original frame of the circle

    frm.size.width*=2;
    frm.size.height*=2;
     frm.origin.y=self.frame.size.height/2.0-frm.size.height/2.0;

    [UIView animateWithDuration:1.5
                          delay:0.0
                        options: UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         con.frame=frm;
                         con.layer.cornerRadius=con.frame.size.width/2.0;
                      }
                     completion:^(BOOL finished){   }];

最佳答案

如果您只想缩放 View 大小,则可以使用以下代码。

[UIView animateWithDuration:2.0 animations:^{

con.transform = CGAffineTransformMakeScale(2, 2); // it will scale as double size

}completion:^(BOOL finished) {
 // do whatever at animation completion
      }
}];

要将 View 重置为正常大小,

con.transform = CGAffineTransformIdentity;

引用:https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGAffineTransform/index.html#//apple_ref/c/func/CGAffineTransformMakeScale

关于objective-c - 为 UIView 设置动画并将圆角半径保持为圆形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428687/

相关文章:

iphone - 如何使用 CAFilter 为相机光圈动画制作动画?

ios - UIView 线性动画移动 View

ios - UIView UIScrollview - 框架、边界、中心混淆

ios - 错误域=kCFErrorDomainCFNetwork 代码=-1009

objective-c - 在翻译过程中改变图像

ios - uiview Controller 内的自定义 uiview 不显示 ios

ios - UIView 框架未在 Swift 2.0/iOS 8.0 和 iOS 9.0 中更新

ios - 如何在 Swift 中缩放卡片时翻转卡片

ios - 使用 try catch 获取表单数据库

objective-c - 尝试在具有 IOS 8 和 Xcode 6 UIAutomation 的设备上运行脚本时出错