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的位置彼此相邻。