Seht her:
//UIImageView* stretchTest = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
//[self addSubview:stretchTest];
UIButton *stretchTest = [UIButton buttonWithType:UIButtonTypeCustom];
[stretchTest setFrame:CGRectMake(0, 0, 400, 100)];
[stretchTest setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[self addSubview:stretchTest];
stretchTest.contentStretch = CGRectMake(0.5, 0.5, 0, 0);
stretchTest.contentMode = UIViewContentModeScaleToFill;
CGRect frame = stretchTest.frame;
frame.size.height = 300;
stretchTest.frame = frame;
Bei Verwendung der UIImageView (oben auskommentiert) wird das Bild entsprechend gestreckt - abgerundete Ecken behalten den korrekten Radius, da nur das mittlere Pixel des Bildes gestreckt wird.
Bei Verwendung der UIButton wird das Bild falsch gestreckt. Die Eckenradien werden nicht beibehalten und es wird hässlich.
Sowohl UIImageView als auch UIButton sind Unterklassen von UIView. Warum ändert die Schaltfläche ihre Größe anders als die imageView?