I have an image whose width = 189, height = 41, so I defined 2 constraints for this UIImageView
like this:
NSArray *constraint_V=[NSLayoutConstraint constraintsWithVisualFormat:@"V:[Title(41)]" options:0 metrics:nil views:viewsDictionary];
[imgVwLogo addConstraints:constraint_V];
NSArray *constraint_H=[NSLayoutConstraint constraintsWithVisualFormat:@"H:[Title(189)]" options:0 metrics:nil views:viewsDictionary];
[imgVwLogo addConstraints:constraint_H];
It looks good on iPhone 4s, but when it comes to iPhone 6 plus I feel the height of the UIImageview
should be a bit increased, because the image looks shrunk vertically.
Maybe adding a multiplier could be the solution. But I don't know how to select the multiplier factor for my elements. I set it as height/width
NSLayoutConstraint *imgtitlecon_Aspect_Ratio =[NSLayoutConstraint
constraintWithItem:imgVwLogo
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:imgVwLogo
attribute:NSLayoutAttributeHeight
multiplier:41/189
constant:0.0f];
[imgVwLogo addConstraint:imgtitlecon_Aspect_Ratio];
but this makes that UIImageView
disappear entirely even on the 4s. How can I solve this problem?
UPDATE
//------------------------ Title image --------------------------------------------
NSArray *constraint_V=[NSLayoutConstraint constraintsWithVisualFormat:@"V: [Title(41)]" options:0 metrics:nil views:viewsDictionary];
[imgVwLogo addConstraints:constraint_V];
NSArray *constraint_H=[NSLayoutConstraint constraintsWithVisualFormat:@"H:[Title(189)]" options:0 metrics:nil views:viewsDictionary];
[imgVwLogo addConstraints:constraint_H];
// Center Horizontally
NSLayoutConstraint *centerXConstraintimgTitle =
[NSLayoutConstraint constraintWithItem:imgVwLogo
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0.0];
[self.view addConstraint:centerXConstraintimgTitle];
NSLayoutConstraint *imgtitlecon_Aspect_Ratio =[NSLayoutConstraint
constraintWithItem:imgVwLogo
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:imgVwLogo
attribute:NSLayoutAttributeHeight
multiplier:(41.0f/189.0f)
constant:0.0f];
[imgVwLogo addConstraint:imgtitlecon_Aspect_Ratio];
NSArray *Titleconstraint_POS_H=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-titleVspace-[Title]-titleVspace-|" options:0 metrics:metrics views:viewsDictionary];
[self.view addConstraints:Titleconstraint_POS_H];
//------------------------ Title image ------------------------------------------------------------
and finally I align my all elements
NSArray *btncon_POS_V=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-50-[Title]-0-[vwgap]-0-[lblFirst]-0-[lblSecond]-20-[textusername]-10-[txtpassword]-20-[btnLogin]-0-[vwgapCopy]-0-[copyrightlbl]" options:0 metrics:nil views:viewsDictionary];
[self.view addConstraints:btncon_POS_V];