【问题标题】:UIView postion changes in retina display视网膜显示中的 UIView 位置变化
【发布时间】:2013-04-30 14:51:35
【问题描述】:

我在视图控制器中添加了一个名为 LayoutView 的子视图。 LayoutView 然后通过给定的代码添加了一个名为 SectionView 的子视图:

MSSectionView *sec1;
            sec1 = [[MSSectionView alloc]initWithFrame:CGRectMake(72, 95,172,145)];

            sec1.tag = 1;
            sec1.delegate = self;
            //sec1.backgroundColor = [UIColor clearColor];
            //sec1.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;
            [self addSubview:sec1];

在我的普通 iPhone 中,它会显示为:

但在我的视网膜显示器中,它会显示为:

我尝试了自动调整面具的大小。但得到了相同的结果。 如何固定剖面视图的位置?

【问题讨论】:

  • 它是哪个设备?即 iPhone 4 或 5
  • 第二张图片是iphone 5
  • 这样做 if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height * [UIScreen mainScreen].scale >= 1136){sec1.frame= CGRectMake(x, y,w,h); }
  • 谢谢。单视图会很容易。但是我有很多这样的观点。
  • 在这种情况下,您必须使用 leftmarigin,topmarigin,rightmargin,bottommarigins

标签: ios objective-c frame autolayout autoresizingmask


【解决方案1】:

我认为您的问题在于 frame 的背景图像而不是 subview 。检查显示背景的 UIImageView 是否正在调整背景图像的大小。使用

反检查子视图的框架
NSLog(@"Subview Frame = %@",NSStringFromCGRect(subview.frame)) 

检查视网膜和非视网膜的屏幕尺寸是否相同。即(两者都应该是 3.5 英寸,或者两者都应该是 4 英寸)。同时在你的背景图像视图上应用自动调整大小

【讨论】:

  • 谢谢。我没有在根视图控制器中应用自动调整大小。这就是自动调整大小无法正常工作的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多