首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移动UIImageView会移动整个视图

移动UIImageView会移动整个视图
EN

Stack Overflow用户
提问于 2014-08-23 12:31:42
回答 1查看 34关注 0票数 0

所以我试着让一些积木(叫做障碍物)从屏幕的顶部掉下来。这是可行的,但我的代码也将整个视图向下移动...

ViewController.h:

代码语言:javascript
复制
@interface ViewController : UIViewController{
IBOutlet UIImageView * obstacle;
IBOutlet UIImageView * block;
NSTimer * obstacleTimer;
NSTimer * obMoveTimer;
}
-(void)obTimer;
-(void)moveOb;

ViewController.m:

代码语言:javascript
复制
- (void)obTimer{
UIImageView *cloneImageView = [[UIImageView alloc] initWithImage:obstacle.image];
cloneImageView.frame = CGRectMake(0, -20, obstacle.frame.size.width,     obstacle.frame.size.height);
cloneImageView.alpha = obstacle.alpha;
cloneImageView.layer.opacity = obstacle.layer.opacity;
cloneImageView.clipsToBounds = obstacle.clipsToBounds;
cloneImageView.backgroundColor = obstacle.backgroundColor;
cloneImageView.tintColor = obstacle.tintColor;
cloneImageView.contentMode = obstacle.contentMode;
cloneImageView.highlighted = obstacle.highlighted;
cloneImageView.opaque = obstacle.opaque;
cloneImageView.userInteractionEnabled = obstacle.userInteractionEnabled;
cloneImageView.multipleTouchEnabled = obstacle.multipleTouchEnabled;
cloneImageView.autoresizesSubviews = obstacle.autoresizesSubviews;
cloneImageView.layer.zPosition = obstacle.layer.zPosition+1;
cloneImageView.tag = numOb + 1;
numOb++;
cloneImageView.hidden = NO;
[obstacle.superview addSubview:cloneImageView];
}
- (void)moveOb{
    for (int i = 0; i <= numOb; i++){
        UIImageView *viewToAnimate = (UIImageView *)[obstacle.superview viewWithTag:i];
        viewToAnimate.center = CGPointMake(viewToAnimate.center.x, viewToAnimate.center.y + 1);
    }
}
- (void)viewDidLoad {
    obstacleTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self         selector:@selector(obTimer) userInfo:nil repeats:YES];
    obMoveTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self     selector:@selector(moveOb) userInfo:nil repeats:YES];
    obstacle.hidden = YES;
    [super viewDidLoad];
}

因此,蓝色的区块正在倒塌,整个景观也是如此。这是一张图片:

EN

回答 1

Stack Overflow用户

发布于 2014-08-23 13:21:19

这些标签可能会给您带来问题。默认情况下,UIViewtag为0。那么,当你调用viewWithTag的时候,你确定你得到了你想要的obstacle吗?

我曾经多次使用标签,通常是在同一个视图中使用不同的东西。通常,我会为此使用#define一个TAG_START_宏,并将它们隔开,就像这样

代码语言:javascript
复制
#define TAG_START_OBSTACLE 10000

每次我分配一个标签时,我都会使用

代码语言:javascript
复制
NSInteger tag = indexIWantToUse + TAG_START_OBSTACLE;

为了重新获得索引,

代码语言:javascript
复制
NSInteger index = tag - TAG_START_OBSTACLE;

尽管我必须说,因为我在这里没有看到obstacle的定义,所以我认为有一种比使用obstacle.superview更好的方法来获取容器UIView。也许是UIViewControllerview属性?其中的一个容器,或者您可以保存指针的某个IBOutlet

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25458455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档