美文网首页我依然爱iOS
[译]《Motion Design for iOS》(二十六)

[译]《Motion Design for iOS》(二十六)

作者: Cloudox_ | 来源:发表于2017-11-20 14:24 被阅读1次

现在让我们着手我们的警告框界面,为了便于在这个demo中实现,会仅仅是一个简单的图片而不是一个有label和按钮的纯代码的界面。让我们开始创建这个界面。

CGFloat alertDimension = 250;
CGRect alertViewFrame = CGRectMake(
    self.window.bounds.size.width/2 - alertDimension/2,
    self.window.bounds.size.height/2 - alertDimension/2,
    alertDimension, alertDimension);
UIView *alertView = [[UIView alloc] initWithFrame:alertViewFrame];

首先,我们需要创建一个UIView对象来作为我们的虚拟警告框,并将其位置设为屏幕的正中央。这是通过将全屏幕的宽和高除以2并减去警告框的宽和高的一半完成的。我喜欢设置一个对象的frame到它完成动画后的最终位置,然后通过操作它的transform属性来调整它的大小或者位置。通过这种方式,当添加动画时,比起重新计算它的CGRectframe,我可以移除transform上已完成的操作。这也是为什么如果我想要它变成1.5倍,比起动画它的整个frame,不得不计算在像素层面它的位置和大小是多少,我更喜欢以好的、简单的增加来动画一个视图的transform.scale,而前一种方式是很痛苦的。保持简单。

是时候设置一些关键属性了。

alertView.backgroundColor = [UIColor colorWithPatternImage:
    [UIImage imageNamed:@"alert_box"]];
alertView.alpha = 0.0f;
alertView.transform = CGAffineTransformMakeScale(1.2, 1.2);
alertView.layer.cornerRadius = 10;

在这段代码中我们做了四件事:

  1. 设置backgroundColor属性为一个图片,这是我创建的看起来像是一个好看、简单的警告框视图的图片。
  2. 设置alpha为0,这样警告框就不会立马可见,直到我们想要它动画进入。
  3. 通过CGAffineTransformMakeScale()函数在变换矩阵中仅仅操作比例值来设置它的transform属性来让比例更大些。
  4. 通过设置视图layer的cornerRadius属性来形成圆角。

让我们给它加一点阴影来完成我们警告框的配置。

alertView.layer.shadowColor = [UIColor blackColor].CGColor;
alertView.layer.shadowOffset = CGSizeMake(0, 5);
alertView.layer.shadowOpacity = 0.3f;
alertView.layer.shadowRadius = 10.0f;
[self.window addSubview:alertView];

如果我将alpha值调回1.0并移除比例增加的变换然后截屏,这就是它看起来的样子。


image

查看完整合集(喜欢请打星~):https://github.com/Cloudox/Motion-Design-for-iOS


查看作者首页

相关文章

网友评论

    本文标题:[译]《Motion Design for iOS》(二十六)

    本文链接:https://www.haomeiwen.com/subject/shsvvxtx.html