- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在努力思考我认为会很容易的事情。一个脉冲圈,SO 上有几个例子,但我仍然无法解决最后一件事。
使用下面的代码,我确实有一个可以很好地扩展和收缩的圆,但是在收缩期间,缩放是从 CGRect 的图层框架(左上角)完成的。扩展工作正常,扩展/收缩在 iOS8 上工作正常。该问题仅发生在 iOS7 上。
我尝试设置 anchor ,在扩展的同时平移 View ……似乎没有任何效果……我做错了什么,我不知道是什么。
如果有人想尝试使用下面的代码,您只需要一个 UIViewController、一个标签和一个按钮,连接到下面的 IBOutlets。
这是我在将我的应用程序提交到应用程序商店之前的最后一个已知错误...:\
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *label;
@property (weak, nonatomic) IBOutlet UIButton *button;
@property (nonatomic) BOOL isExpanded;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.isExpanded = YES;
self.label.layer.cornerRadius = self.label.frame.size.width/2;
self.label.layer.masksToBounds = YES;
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
}
- (IBAction)ExpandOrCollapse:(id)sender {
[self.button setEnabled:NO];
CGFloat animationDuration = 0.30f; // Your duration
CGFloat animationDelay = 0.0f; // Your delay (if any)
if (self.isExpanded) {
CGAffineTransform t = CGAffineTransformMakeScale(.17f, .17f);
CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
scaleAnimation.duration = animationDuration;
scaleAnimation.fromValue = [NSNumber numberWithFloat:1.0f];
scaleAnimation.toValue = [NSNumber numberWithFloat:0.17f];
[self.label.layer addAnimation:scaleAnimation forKey:@"scale"];
[UIView animateWithDuration:animationDuration
delay:animationDelay
options: UIViewAnimationOptionCurveEaseIn
animations:^{
}
completion:^(BOOL finished){
self.isExpanded = NO;
[self.label setTransform:t];
[self.button setEnabled:YES];
}];
}else{
CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
scaleAnimation.duration = animationDuration;
scaleAnimation.fromValue = [NSNumber numberWithFloat:0.17f];
scaleAnimation.toValue = [NSNumber numberWithFloat:1.0f];
[self.label.layer addAnimation:scaleAnimation forKey:@"scale"];
[UIView animateWithDuration:0.3
delay:0
options: UIViewAnimationOptionCurveEaseIn
animations:^{
}
completion:^(BOOL finished){
[self.button setEnabled:YES];
[self.label setTransform:CGAffineTransformMakeScale(1.0, 1.0f)];
self.isExpanded = YES;
}];
}
}
@end
编辑
对于 eiran,这是他修改后的代码。不幸的是,问题仍然存在..
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *label;
@property (weak, nonatomic) IBOutlet UIButton *button;
@property (nonatomic) BOOL isExpanded;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.isExpanded = YES;
self.label.layer.cornerRadius = self.label.frame.size.width/2;
self.label.layer.masksToBounds = YES;
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
}
- (IBAction)ExpandOrCollapse:(id)sender {
[self.button setEnabled:NO];
CGFloat animationDuration = 0.30f; // Your duration
CGFloat animationDelay = 0.0f; // Your delay (if any)
if (self.isExpanded) {
[UIView animateWithDuration:animationDuration
delay:animationDelay
options: UIViewAnimationOptionCurveEaseIn
animations:^{
[self.label setTransform:CGAffineTransformScale(CGAffineTransformIdentity, 0.17f, 0.17f)];
}
completion:^(BOOL finished){
self.isExpanded = NO;
[self.button setEnabled:YES];
}];
}else{
[UIView animateWithDuration:0.3
delay:0
options: UIViewAnimationOptionCurveEaseIn
animations:^{
[self.label setTransform:CGAffineTransformScale(CGAffineTransformIdentity, 1.0f, 1.0f)];
}
completion:^(BOOL finished){
[self.button setEnabled:YES];
self.isExpanded = YES;
}];
}
}
最佳答案
这似乎对我有用:
[UIView animateWithDuration:0.75
delay:0
options:UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse|UIViewAnimationOptionAllowUserInteraction
animations:^{
self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.95, 0.95);
}completion:^(BOOL b){
}];
这是一个重复缩放动画。
编辑:那么好吧:)苹果以神秘的方式工作。我已经为您找到了解决方案,但我不确定问题出在哪里。在 iOS 7.1 中,如果你使用 Storyboard,缩放会按照你说的去做。但是,如果您动态添加组件,则动画效果很好。将此添加到您的代码并检查它:
- (void)viewDidLoad {
[super viewDidLoad];
self.isExpanded = YES;
UIButton* b = [UIButton buttonWithType:UIButtonTypeCustom];
[b setFrame:CGRectMake(100, 400, 120, 40)];
[b addTarget:self action:@selector(expand:) forControlEvents:UIControlEventTouchUpInside];
[b setBackgroundColor:[UIColor blueColor]];
[b setTitle:@"added dynamically" forState:UIControlStateNormal];
[self.view addSubview:b];
}
-(void)expand:(UIButton*)sender{
CGFloat animationDuration = 0.30f; // Your duration
CGFloat animationDelay = 0.0f; // Your delay (if any)
if (self.isExpanded) {
[UIView animateWithDuration:animationDuration
delay:animationDelay
options: UIViewAnimationOptionCurveEaseIn
animations:^{
[sender setTransform:CGAffineTransformScale(CGAffineTransformIdentity, 0.8f, 0.8f)];
}
completion:^(BOOL finished){
self.isExpanded = NO;
}];
}else{
[UIView animateWithDuration:0.3
delay:0
options: UIViewAnimationOptionCurveEaseIn
animations:^{
[sender setTransform:CGAffineTransformScale(CGAffineTransformIdentity, 1.0f, 1.0f)];
}
completion:^(BOOL finished){
self.isExpanded = YES;
}];
}
}
如您所说,它已在 ios 8 上修复。我认为这可能与约束有关,但看起来没有。
在此处添加了一个演示此测试的项目: the test
希望对你有所帮助,英兰。
关于ios - iOS7 上固定中心的 CALayer 动画比例尺,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30503514/
我已经开始尝试在 Canvas 对象上绘图。在过去,我对 Canvas 的接触一直以图像处理为中心 (NPI),因此我对它的坐标系和转换过程比较熟悉。我正在使用屏幕尺寸为 30 X 30 的测试 Ca
当 size 不是原生时,我希望有一个内联 svg 元素的内容缩放。当然,我可以将它作为一个单独的文件并像这样缩放它。 index.html: foo.svg: 但是,我想通过 CSS 向 SVG
我想知道如何在leafleat.js 中显示比例尺 map 。那就是:我想要这个 而不是这个 (带到 leaflet tutorial )。请参见图片的左下角。 最佳答案 您可以使用 L.contro
我遇到了一个问题,我相信很多 iOS 开发者以前都遇到过,所以我来这里寻求帮助。我在一家公司工作,我正在开发的 iPhone 应用程序的设计规范是在 Adobe PhotoShop 中制定的。我得
谷歌地图应用程序默认显示标尺/比例尺,当我们放大/缩小 map 时会出现。我想在我正在构建的 android 应用程序中显示一个类似的标尺。我正在使用 Google Map V2,但似乎没有任何可用的
我有一个从 0 到 275 的 UISlider。我想使用 slider 来缩放 UIImageView。 当我的 slider 值为 0 时,我的 UIImageView 应该具有原始大小(scal
使用 GeoTools 我能够使用 JMapPane 类显示一个简单的形状文件。我的要求是绘制一个类似于任何 map 的条形图,在我放大/缩小时显示 map 的比例尺(以米为单位)与条形图的长度相关。
在我的 Java 应用程序中,我使用 JmapViewer; map 绘制在 jPanel 上。是否可以获取当前缩放级别对应的 map 比例尺?该 map 基于著名的墨卡托投影: X = R * lo
我有一个托管 Google 地球插件实例的应用程序,我有兴趣获取 map 的当前比例并在我的应用程序中使用它。 我知道我可以使用 GEOptions 并设置比例图例可见性,但我想在我的应用程序中使用实
我的缩放级别为 3-21。分别缩小-放大。 但我想用给定的屏幕条(屏幕宽度?)来计算缩放级别到米/公里距离,就像 Gmaps 比例尺一样。 示例: 缩放级别 20 = 数百米 缩放级别 3 = 数千公
我正在努力添加一个 map 比例,该比例根据当前缩放级别在屏幕上显示当前长度。我有一种感觉,它可能存在一些预定义的类来使用,但我不知道......?我到处搜索但找不到任何东西。 我非常感谢任何帮助 =
我正在使用 Google API v2 map Android,但我无法在其上显示比例尺。请帮帮我,我能做些什么来在我的 map 上显示比例尺吗?我正在寻找它,但没有帮助。 最佳答案 Google 在
我正在寻求有关创建用于 D3.js 可缩放 map 的 map 比例尺的帮助。我经常使用 D3.js 为我的工作创建 map 。我从来没有在过去构建的 map 上放置比例尺,但最近我收到了在 map
我是一名优秀的程序员,十分优秀!