1.計算圖片位置的函數(shù):AVMakeRectWithAspectRatioInsideRect(CGSize aspectRatio, CGRect boundingRect)
通過這個函數(shù)搜贤,我們可以計算一個圖片放在另一個 view 按照一定的比例居中顯示钝凶,可能說的我比較抽象耕陷,還是用圖來顯示,可以說它可以直接一個 image 以任何的比例顯示顯示在 imageview 中居中所處的位置(ps:這個函數(shù)是在 AV框架的饺蔑,需要自行導(dǎo)入AVFoundation框架)猾警。
這是一篇介紹比較詳細(xì)的文章傳送門:http://www.reibang.com/p/827090aa933b
2.一段文字動態(tài)行高的計算方法
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSAttributedStringKey, id> *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);
使用示例:
3.坐標(biāo)轉(zhuǎn)換方法
將point由point所在的視圖轉(zhuǎn)換到目標(biāo)視圖view中,返回在目標(biāo)視圖view中的point
- (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view;
將point從view中轉(zhuǎn)換到當(dāng)前視圖,返回在當(dāng)前視圖中的point
- (CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view;
將rect由rect所在的視圖轉(zhuǎn)換到目標(biāo)視圖view中,返回在目標(biāo)視圖view中的rect
- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;
將rect從view中轉(zhuǎn)換到當(dāng)前視圖,返回在當(dāng)前視圖中的rect
- (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view;
注:toView中的view == nil時,view為[UIApplication sharedApplication].keyWindow;
4. iOS 多張圖片合成一張圖片融击,保持原像素不變
- (UIImage *)composeImg {
CGFloat w = self.showImg.size.width;
CGFloat h = self.showImg.size.height;
//以大圖大小為底圖,為了保證像素是原來像素雳窟,一定要用大圖(即底圖)的size
//以showImg的圖大小為畫布創(chuàng)建上下文
UIGraphicsBeginImageContext(CGSizeMake(w, h));
[self.imageView.image drawInRect:CGRectMake(0, 0, w, h)];
//計算縮放比例
CGFloat scaleW = self.showImg.size.width/self.imageRect.size.width;
CGFloat scaleH = self.showImg.size.height/self.imageRect.size.height;
if (self.locationLabel) {
CGFloat locLabelW = scaleW * self.locationLabel.width;
CGFloat locLabelH = scaleH * self.locationLabel.height;
[self.locationLabel drawViewHierarchyInRect:CGRectMake(w-locLabelW-10*scaleW,10*scaleH, locLabelW, locLabelH) afterScreenUpdates:YES];
}
//從當(dāng)前上下文中獲得最終圖片
UIImage *resultImg = UIGraphicsGetImageFromCurrentImageContext();
//關(guān)閉上下文
UIGraphicsEndImageContext();
return resultImg;
}
- (CGRect)imageRect{
return AVMakeRectWithAspectRatioInsideRect(self.showImg.size, self.picBgView.bounds);
}