Если вы хотите создать функцию, которая берет список ключевых слов и проверяет, что каждое ключевое слово представлено в значении, вы можете сделать что-то вроде этого.
keywords = ['black', 'ultra']
def dict_search(list_of_keywords):
for key in dict.keys():
if all(x in key for x in list_of_keywords):
return(key)
In [1]: dict_search(keywords)
hoka one tor ultra high 2 wp boot - black
После установки прямоугольника экрана выполните следующее, чтобы решить, в каком прямоугольнике рисовать изображение:
float hfactor = value.bounds.size.width / screenRect.size.width;
float vfactor = value.bounds.size.height / screenRect.size.height;
float factor = fmax(hfactor, vfactor);
// Divide the size by the greater of the vertical or horizontal shrinkage factor
float newWidth = value.bounds.size.width / factor;
float newHeight = value.bounds.size.height / factor;
// Then figure out if you need to offset it to center vertically or horizontally
float leftOffset = (screenRect.size.width - newWidth) / 2;
float topOffset = (screenRect.size.height - newHeight) / 2;
CGRect newRect = CGRectMake(leftOffset, topOffset, newWidth, newHeight);
Если вы не хотите увеличивать изображения меньше, чем screenRect, сделайте убедитесь, что коэффициент
больше или равен единице (например, коэффициент = fmax (коэффициент, 1)
).
Чтобы получить черный фон, вы, вероятно, захотите просто установить черный цвет контекста и вызвать fillRect перед рисованием изображения.
Я знаю, что это очень старо, но благодарит за то сообщение - оно перенаправило меня от попытки использовать масштаб для рисования изображения. В случае, если это имеет выгоду для любого, я сделал дополнительный класс, который я добавлю здесь. Это позволяет Вам изменять размеры изображения как это:
UIImage imgNew = img.Fit(40.0f, 40.0f);
мне не нужна пригодная опция, но она могла легко быть расширена для поддержки Заливки также.
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;
}
}
}
Согласно сообщению выше, это запускает новый контекст для изображения, затем для того изображения, это выясняет аспект и затем красит в изображение. Если Вы не сделали никакого XCode Swift dev время, UIGraphics немного назад к большинству систем, я работаю с, но не плохо. Одна проблема то, что битовые массивы нижней частью краски по умолчанию к вершине. Для обхождения этого
context.ScaleCTM(1, -1);
context.TranslateCTM(0, -sizeNewImage.Height);
Изменения ориентация рисования к более общему верхнему левому к нижней правой части..., но тогда необходимо переместить источник также следовательно TranslateCTM.
Хотелось бы надеяться, это экономит кому-то некоторое время.
Аплодисменты