Изменение размеров изображения с stretchableImageWithLeftCapWidth

Вы можете использовать оконную функцию, она даст общее количество для всех строк:

SELECT  T.ProductID
,       T.ProductName
,       T.UnitCost
,       T.TotalUnitsSold
,       T.FinalCost
,       SUM(T.FinalCost) OVER(PARTITION BY ProductID) AS Total
FROM    (
            SELECT o.ProductID ,
                   p.ProductName ,
                   o.unitprice AS UnitCost ,
                   sum(o.Quantity) AS TotalUnitsSold ,
                   (sum(o.Quantity)*o.unitprice) AS FinalCost
            FROM OrderDetails o
            JOIN Products p ON o.ProductID = p.ProductID
            GROUP BY o.ProductID ,
                     p.ProductName ,
                     o.unitprice
        ) AS T
ORDER BY 1
7
задан Stephan Burlot 24 April 2009 в 14:06
поделиться

5 ответов

Вы в этом разобрались?

Похоже, это ошибка UIGraphicsGetImageFromCurrentImageContext. Если я рисую изображение с прозрачностью, я получаю красно-зеленые артефакты. Они появляются только на устройстве (не в симке). Кроме того, если я уберу прозрачность с изображения, артефакты исчезнут.

Обновление: Еще немного странностей. Раньше я использовал PNG, поэтому попробовал использовать прозрачный gif. Используя GIF, показывает проблему с артефактом на симуляторе

Победа! Нашел решение:

Отключите «Сжимать файлы PNG» в настройках сборки вашего проекта. Отключение этого параметра позволяет прозрачности PNG работать без каких-либо артефактов.

12
ответ дан 6 December 2019 в 10:53
поделиться

Похоже, вы пишете много ненужного кода, но, возможно, это только потому, что он вне контекста и есть еще кое-что, чего мне не хватает.

Чтобы получить изображение :

[[UIImage imageName: @"bottom_part.png"] stretchableImageWithLeftCapWidth: 27 topCapHeight: 9];

Какую часть вашего кода вы отображаете это изображение? т. е. в каком вызове метода вы рисуете изображения выше?

Почему бы просто не использовать UIImageView и поместить изображение туда? Тогда вам не нужно ничего рисовать в контексте изображения и т. Д.

5
ответ дан 6 December 2019 в 10:53
поделиться

Это фактически возможно с использованием встроенных изображений (называемых URI данных ).

Ваш тэг изображения будет выглядеть примерно так:

<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/
/ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcpp
V0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" 
width="16" height="14" alt="embedded folder icon">

Почему они в основном не являются хорошей идеей:

  • Загрузка страницы будет замедлена , потому что изображение необходимо выбрать , прежде чем полную структуру HTML можно будет загрузить и, таким образом, визуализировать. Тем более, если вы выполняете дополнительные операции с изображением. Ваш сайт, скорее всего, будет чувствовать себя гораздо медленнее, чем если бы это был внешний образ.

  • Встроенные изображения должны быть кодированы base64, добавляя 33% к их размеру .

Если вы говорите о разумном высоком трафике, общедоступном сайте, я бы рекомендовал вам хранить ваши изображения внешне и кэшировать их. Если это просто для небольшого проекта, встроенные изображения могут работать для вас.

-121--2081151-

Более прямое решение состоит в том, чтобы сделать объект ManagedObjectContext общим свойством делегата приложения, чтобы везде, где требуется доступ к нему, делать следующее:

[[[UIApplication sharedApplication] delegate] sharedManagedObjectContext];

при условии, что sharedManagedObjectContext является именем свойства.

-121--2675111-

Я потратил 5 часов на отладку этого последнего вечера, отключение сжатия PNG в xcode ничего не сделало для меня.

Для всех, кто еще встречает вертикальные, зеленые, полосы/линии/артефакты с растягиванием ImageWireLeftCapWidth (в UIImage API) - это сообщение для вас.

У меня есть 21x30 для пользовательского барбаттона фон, который я хочу расширить, но получил те же зеленые полосы, что и ОП. Я нашел PNG создан с фотошопом и который работал хорошо - мои сделаны с Gimp. В любом случае, удаление ВСЕХ кусков из файлов (за исключением трех существенных) не имело никакого значения. Также не отключалось сжатие PNG.

Для меня сработало следующее:

  1. Добавьте ОДНУ пустую строку над моим изображением (сейчас 21x31).
  2. Набор topCapHeight:0 при создании масштабированного изображения.
  3. При использовании масштабированного изображения выполняется рисование в CGContext, который впоследствии используется для создания UIImage. Я использую это, чтобы нарисовать: [image drawInRect: CGRectMake (0, -2, ширина, 32)];

Это устраняет проблему (для меня).

Я предполагаю, что ошибка/проблема связана с не масштабированием по вертикали при рисовании, поэтому я заставляю масштабирование первой строки исходного изображения (на две строки), которые рисуются вне моей композиции.

Надеюсь, это поможет кому-то сэкономить 5 часов.

/Крисб

0
ответ дан 6 December 2019 в 10:53
поделиться

В моем случае у меня был UIImageView, который я растягивал по горизонтали. Я обнаружил странную вертикальную белую линию на растянутом изображении.

Приведенные выше решения не помогли мне. Однако сделало следующее:

Преобразование значения ширины в значение типа int:

myNewViewFrame.size.width = (int)newWidth;
myView.frame = myNewViewFrame;

Надеюсь, это сработает и для вас, ребята ...

1
ответ дан 6 December 2019 в 10:53
поделиться

Я перестал использовать stretchchableImageWithLeftCapWidth в пользу более удобного свойства contentStretch UIView. Я никогда не видел зеленых полос, которые вы описываете, но в целом я бы рекомендовал использовать contentStretch вместо stretchImageWithLeftCapWidth.

0
ответ дан 6 December 2019 в 10:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: