Ios 无法确定UIImageView帧何时相等

Ios 无法确定UIImageView帧何时相等,ios,objective-c,cocoa-touch,uiimageview,frame,Ios,Objective C,Cocoa Touch,Uiimageview,Frame,我有两层。底层由隐藏的UIImageViews组成,上层由可见的UIImageViews组成。当底层UIImageViews的所有帧与上层UIImageViews的帧相等时,您必须在NSLog中看到这一点 问题是NSTimer调用的布尔方法总是立即返回true,因此我看到了NSLog。我只想在所有对应的帧都相等时查看NSLog 这是我的代码: - (void)checkTheFrames { BOOL allEquals = [self isEqualFrames]; if (a

我有两层。底层由隐藏的
UIImageView
s组成,上层由可见的
UIImageView
s组成。当底层
UIImageView
s的所有帧与上层
UIImageView
s的帧相等时,您必须在
NSLog
中看到这一点

问题是
NSTimer
调用的布尔方法总是立即返回true,因此我看到了
NSLog
。我只想在所有对应的帧都相等时查看
NSLog

这是我的代码:

- (void)checkTheFrames {
    BOOL allEquals = [self isEqualFrames];
    if (allEquals) {
        NSLog(@"ALL THE FRAMES ARE EQUAL");
        [AllPosCorrectTimer invalidate];
    }
}

-(BOOL)isEqualFrames {
    for(int i = 0; i < arrayImg.count; i++ ){
        UIImageView *ImageView1 = arrayImg[i];
        UIImageView *ImageView2 = HiddenFieldView[i];
        if (!CGRectEqualToRect(ImageView1.frame, ImageView2.frame)) {
            return NO;
        }
    }
    return YES;
}
-(无效)检查框架{
BOOL-allEquals=[自等质量框架];
if(allEquals){
NSLog(@“所有帧都相等”);
[AllPosCorrectTimer invalidate];
}
}
-(BOOL)等质量框架{
for(int i=0;i

有办法解决这个问题吗?

我认为问题在于你也在比较Xs和Ys。。。也许你应该更进一步到
frame.size
并比较它们。或者可以轻松比较宽度和高度
(frame1.size.width==frame2.size.width)


如果这不能解决问题,请告诉我

你应该记录这些帧,以确保你在isEqualFrames方法中得到了你认为应该得到的东西。我做到了,所有的帧在它们必须相等的时候都是相等的。那么当它们不应该相等的时候,你记录了吗?为什么我必须这样做?你的日志应该是:NSLog(@“%f%f-%f”),ImageView1.frame.origin.x,ImageView1.frame.origin.y,ImageView2.frame.origin.x,ImageView2.frame.origin.y);在等质量帧中,它应该放在if(!CGRectEqualToRect(ImageView1.frame,ImageView2.frame))的前面。这就是你的问题所在,所以这是你应该做日志的地方,应该用你在比较中使用的实际指针来做。请这样做,并报告结果。大小是框架的一部分。我不知道你在说什么mean@Steven对不起,我以为你只是想检查一下大小是否相等。。。所以你也需要比较一下位置?当您第一次启动该方法时,它们是否位于彼此的顶部?UIImageView的位置彼此相邻。