1
最後,我有一個理由要問,而不是淘堆棧溢出的樂趣無盡小時的東西。UIImage的變換/縮放問題
這裏是我的情況:我有一個的UIImageView一個的UIImage裏面。我通過CGAffineTranforms改造整個的UIImageView,以它的規模高度上,並保持在一個特定的角度。 我通過兩個CGPoints將這個變換數據提供給它,所以它基本上只是計算這兩個點之間的角度和比例並進行變換。
現在,變換工作就像一個魅力,但我最近遇到的的UIImage方法resizableImageWithCapInsets,如果你手動設置圖像的框架,其工作只是正常來(即使用幀比例),但似乎使用轉換覆蓋這一點,我的猜測是那種可以預料的,因爲它是核芯顯卡做的事情。
我的問題是,我將如何去a)在轉換圖像後添加帽子插圖或b)通過框架進行角度&縮放?
請注意,提供數據的兩點是觸摸點,因此它們可能會有很大差異,這就是爲什麼在特定角度創建縮放矩形的原因很簡單。
爲了讓你的代碼餓天才開心,這裏有我管定標(創建UIImage的時候只是做帽插圖)當前方式的一個片段:
float xDiff = (PointB.x - PointA.x)/2;
float yDiff = (PointB.y - PointA.y)/2;
float angle = [self getRotatingAngle:PointA secondPoint:PointB];
CGPoint pDiff = CGPointMake(PointA.x + xDiff, PointA.y + yDiff);
self.center = pDiff;
// Setup a new transform
// Set it up with a scale and an angle
double distance = sqrt(pow((PointB.x - PointA.x), 2.0) + pow((PointB.y - PointA.y), 2.0));
float scale = 1.0 * (distance/self.image.size.height);
CGAffineTransform transformer = self.transform;
transformer = CGAffineTransformConcat(CGAffineTransformMakeScale(1.0, scale), CGAffineTransformMakeRotation(angle));
// Apply the transformer
self.transform = transformer;
我可能會誤會你在說什麼,但似乎你只是想維持一個給定的高度寬高比? –
或多或少,是的。我只在一個座標軸上縮放圖像,但我需要該座標軸頂部和底部的特定像素以保持其原始大小(就像使用大括號),同時拉伸圖像的中間部分。 – Dids
也許你可以嘗試使用的UIImageView的內置長寬比功能,並UIImage的的resizableImageWithCapInsets設置。 –