Ios 更新较大屏幕的ImageView帧大小

Ios 更新较大屏幕的ImageView帧大小,ios,objective-c,Ios,Objective C,如果是iPad,我想更新ImageView的框架宽度和高度。我尝试过这样做,但只有在执行任何UI交互时,视图才会更新 -(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil isKneeMap:(BOOL)tIsKnee{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) {

如果是iPad,我想更新ImageView的框架宽度和高度。我尝试过这样做,但只有在执行任何UI交互时,视图才会更新

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil isKneeMap:(BOOL)tIsKnee{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
            // Custom initialization            
    } if(I_PAD){
        VAL = IS_IPAD ? 1.5 :1;
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.ImgViewL = [[UIImageView alloc]
                     initWithFrame:CGRectMake(0,0,140*VAL,290*VAL)];
    self.view = self.myView;
}

我也尝试了
[self.view layoutifneed]
,但没有改变相同的结果。有没有更好的方法可以做到这一点。请帮助我解决这个问题。

使用宽度和高度限制的插座,更新它们并调用layoutifneed()


如注释中所述,绝不应直接设置使用自动布局的视图的框架

您确定图像视图大小的方法存在潜在问题-您在SE和加大尺寸的设备上使用相同的大小,在9.7英寸iPad和12.9英寸iPad pro上使用相同的大小。您应该考虑设置约束以使用比例尺寸…

在上面的示例中,iPhone 8/X上的图像视图宽度为140磅,SE上为124磅,加大尺寸设备上为155磅

或者,如果你想使用故事板实现1.5倍的iPad乘数,你可以为宽度和高度的变化添加不同的常数


这将使所有iPhone的纵向宽度为140(紧凑宽度、规则高度),iPad的纵向宽度为210(规则宽度和高度)

您在项目中是否使用自动布局?是的,我使用auto layout@gihan因为使用auto layout,您需要通过制作插座而不更改框架来更新高度和宽度约束。如果stroryboard上有autolayout,请创建插座并更新其上的约束。如果没有,请从代码中设置约束。切勿使用固定框架。如果你解释了你想使用哪种用户界面,可能会建议一些好的方法,比如这样,但结果相同@Seref self.footwidthsconstraint.constant=140*MULT;self.FootHeightConstraint.constant=290*MULT;[self.view setNeedsLayout];
@IBOutlet weak var imageViewWidthConstraint: NSLayoutConstraint!
@IBOutlet weak var imageViewHeightConstraint: NSLayoutConstraint!

imageViewWidthConstraint.constant = 140*VAL
imageViewHeightConstraint.constant = 290*VAL

view.layoutIfNeeded()