Rav*_*oda 168 objective-c uiimageview uiimage ios
我有一个图像视图,以编程方式声明,我也以编程方式设置其图像.
但是,我发现自己无法将图像设置为适合方面并将中心与图像视图对齐.
换句话说,我希望图像:
我怎么做到的?
Rav*_*oda 194
刚刚粘贴解决方案:
就像@manohar说的那样
imageView.contentMode = UIViewContentModeCenter;
if (imageView.bounds.size.width > ((UIImage*)imagesArray[i]).size.width && imageView.bounds.size.height > ((UIImage*)imagesArray[i]).size.height) {
imageView.contentMode = UIViewContentModeScaleAspectFit;
}
Run Code Online (Sandbox Code Playgroud)
解决了我的问题
Ali*_*aza 67
在swift语言中我们可以设置UIImage视图的内容模式,如下所示:
let newImgThumb = UIImageView(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
newImgThumb.contentMode = .scaleAspectFit
Run Code Online (Sandbox Code Playgroud)
Nat*_*ook 12
更新的答案
当我在2014年最初回答这个问题时,没有要求在小图像的情况下不缩放图像.(该问题于2015年编辑.)如果您有这样的要求,您确实需要将图像的大小与imageView的大小进行比较,并使用UIViewContentModeCenter
(在图像小于imageView的UIViewContentModeScaleAspectFit
情况下)或在所有其他情况下使用.
原始答案
将imageView的contentMode设置UIViewContentModeScaleAspectFit
为足够我.它似乎也是图像的中心.我不确定为什么其他人正在使用基于图像的逻辑.另请参阅此问题:iOS方面适合和中心
Jon*_*ann 12
迅速:
yourImageView.contentMode = .center
Run Code Online (Sandbox Code Playgroud)
您可以使用以下选项来定位图像:
scaleToFill
scaleAspectFit
//内容按比例缩放以适合固定的方面。其余部分是透明的redraw
//重绘边界更改(调用-setNeedsDisplay)center
//内容保持相同大小。调整位置。top
bottom
left
right
topLeft
topRight
bottomLeft
bottomRight
Nic*_*nux 10
我这样解决了这个问题.
UIImageView
(with UIViewContentModeScaleAspectFit
)(CGSize imageSize = imageView.image.size)
UIImageView
调整. [imageView sizeThatFits:imageSize]
我想把UIView放在最顶端UICollectionViewCell
.所以,我使用了这个功能.
- (void)setImageToCenter:(UIImageView *)imageView
{
CGSize imageSize = imageView.image.size;
[imageView sizeThatFits:imageSize];
CGPoint imageViewCenter = imageView.center;
imageViewCenter.x = CGRectGetMidX(self.contentView.frame);
[imageView setCenter:imageViewCenter];
}
Run Code Online (Sandbox Code Playgroud)
这个对我有用.
您可以通过将图像视图的内容模式设置为UIViewContentModeScaleAspectFill来实现此目的.
然后使用以下方法方法获取调整大小的uiimage对象.
- (UIImage*)setProfileImage:(UIImage *)imageToResize onImageView:(UIImageView *)imageView
{
CGFloat width = imageToResize.size.width;
CGFloat height = imageToResize.size.height;
float scaleFactor;
if(width > height)
{
scaleFactor = imageView.frame.size.height / height;
}
else
{
scaleFactor = imageView.frame.size.width / width;
}
UIGraphicsBeginImageContextWithOptions(CGSizeMake(width * scaleFactor, height * scaleFactor), NO, 0.0);
[imageToResize drawInRect:CGRectMake(0, 0, width * scaleFactor, height * scaleFactor)];
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resizedImage;
}
Run Code Online (Sandbox Code Playgroud)
编辑在这里(斯威夫特版)
func setProfileImage(imageToResize: UIImage, onImageView: UIImageView) -> UIImage
{
let width = imageToResize.size.width
let height = imageToResize.size.height
var scaleFactor: CGFloat
if(width > height)
{
scaleFactor = onImageView.frame.size.height / height;
}
else
{
scaleFactor = onImageView.frame.size.width / width;
}
UIGraphicsBeginImageContextWithOptions(CGSizeMake(width * scaleFactor, height * scaleFactor), false, 0.0)
imageToResize.drawInRect(CGRectMake(0, 0, width * scaleFactor, height * scaleFactor))
let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resizedImage;
}
Run Code Online (Sandbox Code Playgroud)
如果图像不大于视图,则此子类使用center,否则缩小.我发现这对UIImageView
改变大小有用.
它显示的图像小于大尺寸的视图,但比小尺寸的视图大.我希望它只是缩小,但不是.
class CenterScaleToFitImageView: UIImageView {
override var bounds: CGRect {
didSet {
adjustContentMode()
}
}
override var image: UIImage? {
didSet {
adjustContentMode()
}
}
func adjustContentMode() {
guard let image = image else {
return
}
if image.size.width > bounds.size.width ||
image.size.height > bounds.size.height {
contentMode = .ScaleAspectFit
} else {
contentMode = .Center
}
}
}
Run Code Online (Sandbox Code Playgroud)
let bannerImageView = UIImageView();
bannerImageView.contentMode = .ScaleAspectFit;
bannerImageView.frame = CGRectMake(cftX, cftY, ViewWidth, scrollHeight);
Run Code Online (Sandbox Code Playgroud)
[your_imageview setContentMode:UIViewContentModeCenter];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
260290 次 |
最近记录: |