创建拉伸不变形的图片

/**
* 返回一张可以随意拉伸不变形的图片
*
* @param name 图片名字
*/
+ (UIImage *)resizableImage:(NSString *)name
{
UIImage *normal = [UIImage imageNamed:name];
CGFloat w = normal.size.width * 0.5;
CGFloat h = normal.size.height * 0.5;
return [normal resizableImageWithCapInsets:UIEdgeInsetsMake(h, w, h, w)];
}


还有两种方法可以完成改功能
// 拉伸图片
// [normal stretchableImageWithLeftCapWidth:(NSInteger) topCapHeight:(NSInteger)];
// [normal resizableImageWithCapInsets:(UIEdgeInsets) resizingMode:(UIImageResizingMode)];
### 图片显示比例变形的方法 为了确保图片在网页或应用中显示时发生变形,可以采用多种CSS技术来实现这一目标。对于希望按照特定的比例(如1:1 或 4:3)展示图片的情况,并且当原图符合该比例时自动裁剪多余的部分而拉伸图像,下面介绍几种有效的方式。 #### 方法一:利用 `object-fit` 属性 通过设置 `<img>` 标签内的 CSS 属性 `object-fit` 可以控制图片在其框内如何调整大小。此属性允许指定图片应如何适应其容器的内容盒。如果想要保持原始纵横比而需要改变形状,则可以选择 `cover` 值;它会尽可能大地填充整个区域,必要时裁切掉超出边界的那部分[^4]。 ```css img { width: 100%; height: auto; object-fit: cover; /* 确保图片会被拉伸 */ } ``` 这种方法非常适合用于创建具有固定宽度和高度的网格布局中的图片项,在这些情况下即使源文件有同的尺寸也能很好地工作。 #### 方法二:使用伪类模拟背景图片行为 另一种方式是模仿背景图片的行为——即把图片作为 div 的背景而非直接放置 img 元素。这种方式下可以通过定义父级元素的具体宽高以及使用 `background-size: cover;` 来确保图片始终覆盖整个区域的同时维持正确的比例[^2]。 ```html <div class="image-container"></div> ``` ```css .image-container { position: relative; padding-top: 75%; /* 如果需要4:3比例可设为 (3/4)*100% 即75%,如果是正方形则为100% */ background-image: url('path_to_image'); background-position: center; background-size: cover; } ``` 这种做法特别适合于那些仅关心单个组件内部的表现形式还涉及到整体页面结构设计的情形。 #### 方法三:针对多张同尺寸的小图标处理方案 面对多个小图标或者表情包这样原本就存在较大差异性的素材集合时,除了简单地给定固定的宽高外还可以考虑加入额外样式规则防止它们因强制设定而导致失真问题。比如引入 overflow:hidden 并配合相对定位使溢出部分内容可见从而间接实现了“裁剪”的效果[^3]。 ```css .icon-wrapper { display: inline-block; width: 80px; height: 80px; overflow: hidden; } .icon-wrapper img { min-width: 100%; min-height: 100%; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } ``` 上述三种策略都能有效地帮助开发者们解决在Web开发过程中遇到的各种关于图片适配的问题,具体选择哪一种取决于实际应用场景和个人偏好等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值