问题
I have been playing around with iPhone interface building using only code and not using IB.
Now I'm facing the following problem:
How can I set an image to have a width based on the main view it is located on and to let it have a margin of for example 50 pixels on both sides. ( it should also work with rotation so the width should be flexible ).
I have tried setting the size with frame.size.width - 50 for example but this doesn't work when the screen rotates. Another thing I tried is using the autoresizing masks but I'm not completely understanding how this works.
Does one still need to set a frame for an image or is this completely overruled by the autoresizing masks? And if it's overruled how can I give the image a fixed height and a flexible width?
The book I'm using ( advanced iOS4 programming ) is not very clear in this matter and most examples I find on the net are for interface builder.
Thanks for your time.
Kind regards, Jasper
回答1:
Horizontally:
- Resize keeping fixed left/right margins:
UIViewAutoresizingFlexibleWidth - Keep size and same distance from the left:
UIViewAutoresizingFlexibleRightMargin - Keep size, stay centered:
UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin - Keep size and same distance from the right:
UIViewAutoresizingFlexibleLeftMargin
Vertically:
- Resize keeping fixed top/bottom margins:
UIViewAutoresizingFlexibleHeight - Keep size and same distance from the top:
UIViewAutoresizingFlexibleBottomMargin - Keep size, stay centered:
UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin - Keep size and same distance from the bottom:
UIViewAutoresizingFlexibleTopMargin
Combine one from the first section with one from the second with a |. For example, to have it resize horizontally and keep the same size and distance from the top vertically, you'd use UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin.
You can use other combinations to do some more tricky things, but those are the basics.
回答2:
You probably want this:
[myImageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
That will keep the margins static and resize the width.
来源:https://stackoverflow.com/questions/5169517/autoresizing-mask-flexible-width-of-an-image-with-fixed-height