UIImageView 范围。从另一个类访问

Posted

技术标签:

【中文标题】UIImageView 范围。从另一个类访问【英文标题】:UIImageView scope. Accessing from another class 【发布时间】:2011-09-02 18:49:02 【问题描述】:

这是我正在使用的部分代码:http://pastie.org/2472364

我已经弄清楚如何从以编程方式创建它的同一个类文件中的另一个方法访问 UIImageView。

但是,我想知道如何从 LetterTiles.m 文件中访问相同的 UIImageView,特别是在 touchesMoved 方法中。我在示例中编写代码的方式,它只会显示框架是否相交,如果它们在调用 otherMethod 时它们彼此重叠。当然,我需要能够检查视图是否在实际的 touchesMoved 方法中相交。我敢肯定这是非常简单的事情,但我只是不知道该怎么做。

提前感谢您能给我的任何帮助。

【问题讨论】:

【参考方案1】:

根据您的评论,并使用您已有的代码,我会走这条路。这不是我个人会做的,仅供参考。结构有点摇摆不定,听起来像你想要的那样。

在 touchesBegan 函数中创建占位符 UIImageView,然后在用户停止移动图像时检查它们是否相交。

#import "LetterTiles.h"

@implementation LetterTiles
@synthesize placeHolder;

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event 
    // Retrieve the touch point (I consider this useful info to have, so I left it in)
    CGPoint pt = [[touches anyObject] locationInView:self];
    startLocation = pt;

    // Create a place holder image wherever you want
    [self setPlaceHolder:[[[UIImageView alloc] initWithFrame:CGRectMake(39, 104, 70, 70)] autorelease]];
    [newImage setImage[UIImage imageNamed:@"placeHolder.png"]] autorelease];




-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
     CGPoint pt = [[touches anyObject] locationInView:[self superview]];

     [self setCenterPoint:pt];


-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event 
     LetterTiles *movingTile = self;

     if (CGRectIntersectsRect([movingTile frame], [placeHolder frame])) 
         NSLog(@"Touched");

         [self setFrame:[placeHolder frame]];
     

【讨论】:

是的,你是对的,我应该解释一下我最终想要做什么。我的错。当我触摸一个字母图块时,我希望它在屏幕中间的某个位置创建一个 UIImageView。该 UIImageView 将成为触摸/拖动的字母图块的“占位符”。用户将字母拼贴拖到“占位符”上,字母拼贴将卡入占位符顶部的位置。这样,字母瓷砖就排列起来了。这更有意义吗? 是的,这更有意义。我重写了我的帖子以适应这个想法。这个结构有点不规则。一方面,我会将placeHolder 的东西移动到父视图中,这样您就可以更好地控制它,而不是在对象中创建placeHolders 并删除它们等等。 你先生是史诗。非常感谢您的帮助和代码。这是完美的。【参考方案2】:

    创建一个名为 ViewMoved 的协议,该协议将包含一个方法 otherMethod。

    在 myMainViewController 中实现

    在 LetterTiles 中获取 ViewMoved 类型的委托属性。

    在 myMainViewController 中创建 LetterTiles 类型的新对象时分配 self。

    在每次触摸移动时调用委托的 oherMethod 并检查是否有任何 LetterTiles 类型的视图相交。

当任何视图移动时,这将捕获任何交叉点.....

如果以上内容与您的问题不匹配,请在此处填写......

【讨论】:

以上是关于UIImageView 范围。从另一个类访问的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 5 中创建一个继承自另一个类的 UIImageView 类

在 UIImageview 上覆盖 UIImageview 保存

无法从另一个函数(在全局范围内定义)访问变量(数组)

将 UIimageView 放在前面

快速从发件人处获取 UIImage

UIImageView 没有动画