2012-07-31 32 views
0

所以我有一個自定義視圖(它是一個自定義的textview,位於鍵盤上);然而它可以調整大小,所以我想要背景圖像(UIImageView與UIImage內)來擴展它。下面的代碼什麼也不做:當界限或框架被更改時,UIImageView沒有調整大小?

//size of entire custom view 
CGRect bFrame = self.keyboard.frame; 
bFrame.origin.y += heightDifference; 
bFrame.size.height += heightDifference; 

//lets set frame and bounds for the uiimageview 
self.keyboard.background.frame = bFrame; 
self.keyboard.background.bounds = bFrame; 

//I thought the lines above would work, but they didn't, trying to reset the image and change its content mode as a hack.. .still no beans. 
self.keyboard.background.image = [UIImage imageNamed:@"keyboard_backgroundv1_5.png"]; 
self.keyboard.background.contentMode = UIViewContentModeScaleToFill; 

回答

0

此功能可以幫助你

CGSize targetSize = CGSizeMake(self.keyboard.frame.size.width, self.keyboard.frame.size.height); 

self.keyboard.background.image = [self imageByScalingProportionallyToSize:targetSize ImageForConvert:[UIImage imageNamed:@"keyboard_backgroundv1_5.png"]]; 


-(UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize ImageForConvert:(UIImage *)sourceImage 
{ 
    UIImage *newImage = nil; 

    CGSize imageSize = sourceImage.size; 
    CGFloat width = imageSize.width; 
    CGFloat height = imageSize.height; 

    CGFloat targetWidth = targetSize.width; 
    CGFloat targetHeight = targetSize.height; 

    CGFloat scaleFactor = 0.0; 
    CGFloat scaledWidth = targetWidth; 
    CGFloat scaledHeight = targetHeight; 

    CGPoint thumbnailPoint = CGPointMake(0.0,0.0); 

    if (CGSizeEqualToSize(imageSize, targetSize) == NO) 
    { 

     CGFloat widthFactor = targetWidth/width; 
     CGFloat heightFactor = targetHeight/height; 

     if (widthFactor < heightFactor) 
      scaleFactor = widthFactor; 
     else 
      scaleFactor = heightFactor; 

     scaledWidth = width * scaleFactor*1; 
     scaledHeight = height * scaleFactor; 

     // center the image 

     if (widthFactor < heightFactor) 
     { 
      thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; 
     } else if (widthFactor > heightFactor) { 
      thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5; 
     } 
    } 


    UIGraphicsBeginImageContext(targetSize); 

    CGRect thumbnailRect = CGRectZero; 
    thumbnailRect.origin = thumbnailPoint; 
    thumbnailRect.size.width = scaledWidth; 
    thumbnailRect.size.height = scaledHeight; 

    [sourceImage drawInRect:thumbnailRect]; 

    newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage ; 
}