当前位置: 首页 > 编程日记 > 正文

ios 代码设置控件宽高比_用宽高比调整UIImage的大小?

我知道这很老了,但是感谢那篇文章-它使我从尝试使用比例尺重定向到绘制图像。万一对任何人都有利,我做了一个扩展类,我将在这里进行介绍。它允许您调整图像的大小,如下所示:

UIImage imgNew = img.Fit(40.0f, 40.0f);

我不需要合适的选项,但可以轻松扩展它以支持Fill。

using CoreGraphics;

using System;

using UIKit;

namespace SomeApp.iOS.Extensions

{

public static class UIImageExtensions

{

public static CGSize Fit(this CGSize sizeImage,

CGSize sizeTarget)

{

CGSize ret;

float fw;

float fh;

float f;

fw = (float) (sizeTarget.Width / sizeImage.Width);

fh = (float) (sizeTarget.Height / sizeImage.Height);

f = Math.Min(fw, fh);

ret = new CGSize

{

Width = sizeImage.Width * f,

Height = sizeImage.Height * f

};

return ret;

}

public static UIImage Fit(this UIImage image,

float width,

float height,

bool opaque = false,

float scale = 1.0f)

{

UIImage ret;

ret = image.Fit(new CGSize(width, height),

opaque,

scale);

return ret;

}

public static UIImage Fit(this UIImage image,

CGSize sizeTarget,

bool opaque = false,

float scale = 1.0f)

{

CGSize sizeNewImage;

CGSize size;

UIImage ret;

size = image.Size;

sizeNewImage = size.Fit(sizeTarget);

UIGraphics.BeginImageContextWithOptions(sizeNewImage,

opaque,

1.0f);

using (CGContext context = UIGraphics.GetCurrentContext())

{

context.ScaleCTM(1, -1);

context.TranslateCTM(0, -sizeNewImage.Height);

context.DrawImage(new CGRect(CGPoint.Empty, sizeNewImage),

image.CGImage);

ret = UIGraphics.GetImageFromCurrentImageContext();

}

UIGraphics.EndImageContext();

return ret;

}

}

}

按照上面的文章,它为图像启动了一个新的上下文,然后为该图像找出纵横比,然后绘制到图像中。如果您还没有完成任何Swift xcode开发时间,那么UIGraphics对于我使用的大多数系统都会有些落后,但还不错。一个问题是,默认情况下,位图从下至上绘制。为了解决这个问题,

context.ScaleCTM(1, -1);

context.TranslateCTM(0, -sizeNewImage.Height);

将图形的方向更改为更常见的左上角到右下角...,但是随后还需要移动原点,因此也需要移动TranslateCTM。

希望它可以节省一些时间。

干杯

相关文章:

jquery入门 修改网页背景颜色

我们在浏览一些网站&#xff0c;尤其是一些小说网站的时候&#xff0c;都会有修改页面背景颜色的地方&#xff0c;这个功能使用jquery很容易实现。 效果图&#xff1a; show you code: <!doctype html> <html> <head> <meta charset"utf-8">…

对于装饰器Decorator的理解

装饰器是用来描述函数&#xff0c;记录日志&#xff0c;提供信息的函数&#xff0c;是一个为了更好的服务主函数的副函数&#xff1a; 详情还需查看&#xff1a;廖雪峰装饰器 关键在于&#xff1a;【import functools是导入functools模块。模块的概念稍候讲解。现在&#xff0c…

UE的注册流程

协议36.508 4.5节 有个表格写的很清楚&#xff1a; Table 4.5.2.3-1: UE registration procedure (state 1 to state 2)

五大主流数据库模型

转载自 五大主流数据库模型 导读&#xff1a;无论是关系型数据库还是非关系型数据库&#xff0c;都是某种数据模型的实现。本文将为大家简要介绍5种常见的数据模型&#xff0c;让我们来追本溯源&#xff0c;窥探现在流行的数据库解决方案背后的神秘世界。 什么是数据模型&#…

laytpl语法_layui语法基础

一.按钮区分​ 1.按照主题划分​ 原始&#xff1a;class "layui-btn layui-btn-primary"​ 默认&#xff1a;class "layui-btn"​ 百搭&#xff1a;class "layui-btn layui-btn-normal"​ 暖色&#xff1a;class "layui-btn layui-btn-…

黑马程序员-张老师基础加强3-内省

内省&#xff1a;javaBean JavaBean是一种特殊的Java类&#xff0c;主要用于传递数据信息&#xff0c;这种java类中的方法主要用于访问私有的字段&#xff0c;且方法名符合某种命名规则。 JavaBean的属性是根据其中的setter和getter方法来确定的&#xff0c;而不是根据其中的成…

shell 中长命令的换行处理

考察下面的脚本&#xff1a; emcc -o ./dist/test.html --shell-file ./tmp.html --source-map-base dist -O3 -g4 --source-map-base dist -s MODULARIZE1 -s "EXPORT_NAME\"Test\"" -s USE_SDL2 -s LEGACY_GL_EMULATION1 --pre-js ./pre.js --post-js ./…

golang bufio.newscanner如何超时跳出_Golang微服务的熔断与限流

(给Go开发大全加星标)来源&#xff1a;Che Danhttps://medium.com/dche423/micro-in-action-7-cn-ce75d5847ef4【导读】熔断和限流机制对于大流量高并发服务来说不可或缺&#xff0c;尤其在微服务架构下更需要在服务中配置熔断限流机制。对可用性要求高的系统&#xff0c;熔断和…

JasperReport报表设计4

在JRXML模板&#xff08;或JRXML文件&#xff09;中的JasperReport 都是标准的 XML文件&#xff0c;以.JRXML扩展。所有JRXML文件包含标签<jasperReport>&#xff0c;作为根元素。这反过来又包含许多子元素&#xff08;所有这些都是可选的&#xff09;。JasperReport框架…

C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes

因为一些特性复杂&#xff0c;很多时候也用不到一些特性&#xff0c;所以忘记了&#xff0c;算是随笔&#xff0c;也当作一个临时查找的手册。没有什么顺序&#xff0c;很杂。 1.构造函数通过函数重载的机制可以有多个&#xff08;不同的构造函数&#xff0c;参数个数&#xff…

Kibana + Elasticsearch + ik分词的集群搭建

Elasticsearc&#xff1a; Elasticsearch 是一个分布式的搜索和分析引擎&#xff0c;可以用于全文检索、结构化检索和分析&#xff0c;并能将这三者结合起来。Elasticsearch 基于 Lucene 开发&#xff0c;是 Lucene 的封装&#xff0c;提供了 REST API 的操作接口&#xff0c;开…

VOLTE parameter in Attach Request/Accept message

VOLTE字面上是:Voice over LTE. 但是人们所提到的VOLTE,实际上是指“Voice over LTE utilizing IMS” Attach Request/Accept消息中包含了VOLTE相关的参数。 1. Attach request 参考: 3GPP 24.301 – 8.2.4 关注红框内的3个参数&#xff1a; SrvccToGeranOrUtranCapability 参…

[YY题]HDOJ5288 OO’s Sequence

题意&#xff1a;求这个式子 $\sum \limits_{i1}^{n} \sum \limits_{j1}^{m} f(i, j) mod (10^9 7)$ 的值 就是对每个区间[i, j]枚举区间中的每个数$a_i$到$a_j$, 判断这个$a$是否对[i, j]这个区间内所有数取模都不等于0&#xff0c; 若是&#xff0c;则这个区间满足条件 问有…

python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据

在使用python读取Excel文件中的时间格式&#xff0c;碰到的时间格式转换问题&#xff1a;读取这样的表格&#xff1a;输出这样的数据结果&#xff1a;然而这样的结果却不是我们想要的&#xff0c;我们需要的是这样的结果:1、安装python官方库---datetime引入datetime库import d…

操作无法完成后台打印程序无法运行

同事反映原共享的打印机无法打印。我删除重新添加时系统提示 操作无法完成后台打印程序无法运行。于是我打开服务找到print spooler服务进程设置自动开启后重新添加问题依旧。在网上查到的方法是病毒清了后你的 SPOOLSV.EXE文件就没有了,且在服务里你的后台打印print spooler也…

NodeJS 模块

cheerio 可以用jQuery操作DOM&#xff08;服务器端&#xff09; 转载于:https://www.cnblogs.com/tujw/p/11054252.html

Linux下netstat命令详解&&netstat -anp | grep 讲解

Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

Linux命令——根据端口号查进程

查出的数据第二列(16615)是elasticsearch的进程号。通常我们会根据端口号查进程号,或者通过进程号查端口号。linux环境下,我们常常会查询进程号pid。最常用ps -ef |grep xx。根据端口port查进程。根据端口port查进程。根据进程pid查端口。根据进程pid查端口。

RRC Connection Reconfiguration

RRC Connection Reconfiguration Dir: E-UTRAN -> UE SRB: SRB1 这个消息用来修改RRC连接&#xff0c;主要目的&#xff1a; 1. To establish/modify/release Radio Bearers; 无线承载 2. To perform Handover; 切换 3. To setup/modify/release Measurements; 测量…

H - Parity game-poj1733(需要离散化)

题意&#xff1a;给一个序列这个序列都是由0和1组成&#xff0c;现在随意拿出来一个序列&#xff0c;然后说出他的和是奇数还是偶数&#xff0c;因为有可能存在假话&#xff0c;让你判断前多少条没有假话&#xff0c;也就是查找第一个假话的位置-1//这道题很像D题&#xff0c;都…

redis 缓存过期默认时间_缓存的必知必会:一文搞懂Redis持久化和过期机制

本文主要介绍了 Redis 持久化的两种机制&#xff1a;RDB 和 AOF&#xff0c;以及键过期的策略&#xff1a;惰性删除和定期删除&#xff0c;还有 RDB、AOF 和复制功能对过期键的处理。RDBRDB 是 Redis 持久化的第一种方式。有两个 Redis 命令可以用于生成 RDB 文件&#xff0c;一…

ASP.NET MVC 5 - 视图

2019独角兽企业重金招聘Python工程师标准>>> 在本节中&#xff0c;你要去修改HelloWorldController类&#xff0c;使用视图模板文件&#xff0c;在干净利索地封装的过程中&#xff1a;客户端浏览器生成HTML。 您将创建一个视图模板文件&#xff0c;其中使用了ASP.NE…

java内存泄漏问题排查

背景&#xff1a;程序部署在客户机器上&#xff0c;不定期异常崩溃&#xff0c;且无日错误异常日志记录。 day1&#xff1a;初步排查是内存问题导致的&#xff0c;考虑使用分析工具记录分析。另外代码review仔细排查&#xff0c;怀疑有可能跟大量网络socket没有释放有关。 程序…

的正确使用_弹力袜的正确使用

何为弹力袜&#xff1f;弹力袜是预防下肢静脉疾病的重要措施&#xff0c;其设计上远心端压力大&#xff0c;近心端压力小。医用循序减压弹力袜在脚踝部建立最高支撑压力&#xff0c;顺着腿部向上逐渐递减&#xff0c;在小腿肚减到最大压力值的70%-90%,在大腿处减到最大压力值的…

yii2的安装

yii2也是依赖于composer, 就像laravel, 所以先安装composer, 如果安装不上composer可以看laravel安装的文章. 安装好composer之后安装一个插件 composer global require "fxp/composer-asset-plugin:1.0.0"或composer global require "fxp/composer-asset-plugi…

eclipse new server Cannot create a server using the selected type 网上有两种办法,其实原理一样...

eclipse new server Cannot create a server using the selected type 网上有两种办法&#xff0c;其实原理一样第一种说法&#xff1a;还真的找到解决的方法了,如下:1.退出eclipse2.到[工程目录下]/.metadata/.plugins/org.eclipse.core.runtime3.把org.eclipse.wst.server.co…

代码示例_网络编程_select

select_多路复用 1.头文件 1 #pragma once2 3 #include <stdio.h>4 #include <stdlib.h>5 #include <sys/types.h>6 #include <sys/select.h>7 #include <sys/time.h>8 #include <sys/socket.h>9 #include <strings.h> 10 #include …

LTE中基本通信过程的理解——上行调度

上行调度1. UE向ENB请求上行资源Physical channel: PUCCHMessage: SR (schedule request)根据上层的配置UE按照一定的周期和子帧位置上通过PUCCH中的控制消息UCI传输SR【RACH成功之后&#xff0c;ENB配置UE的SR子帧位置和发送周期&#xff0c;如果接入UE过多周期就长&#xff0…

qrcode生产带logo_“白板”口罩打上LOGO装名牌 警方重拳出击清市场

看看新闻Knews记者 毛鸿仁2020-09-17 10:19假冒口罩危害大&#xff0c;无良商家被查处。近日&#xff0c;上海松江警方侦破了一起假冒品牌口罩的案件&#xff0c;犯罪嫌疑人赵某等人被松江警方依法采取刑事强制措施。7月下旬&#xff0c;上海市公安局松江分局通过警企协作&…