как установить изображение в uiimage

<p>как я могу установить изображение на <code>uiimage</code> объект . например:</p><pre><code>uiimage *img = [[uiimage alloc] init]; [img setimage:[uiimage imagenamed:@"anyimagename"]]; </code></pre><p>мой объект <code>uiimage</code> объявлен в файле <code>.h</code> и размещен в методе <code>init</code>, мне нужно установить изображение в методе <code>viewdidload</code> ... есть идеи?</p>

<pre><code>uiimage *img = [uiimage imagenamed:@"anyimagename"]; </code></pre><blockquote> <p><strong> <a href="http://developer.apple.com/library/ios/documentation/uikit/reference/uiimage\_class/reference/reference.html#//apple\_ref/occ/clm/uiimage/imagenamed:">imagenamed:</a> </strong><br> возвращает объект изображения, связанный с указанным именем файла.</p> <pre><code> + (uiimage *)imagenamed:(nsstring *)name </code></pre> <p>параметры<br> <strong>название</strong><br> название файла. если изображение загружается впервые, метод ищет изображение с указанным именем в основной пакет приложения.<br> <strong>возвращаемое значение</strong><br> объект изображения для указанного файла или nil, если метод не может найти указанное изображение.</p> <p><strong>обсуждение</strong><br> этот метод ищет в системных кэшах объект изображения с указанным именем и возвращает этот объект, если он существует. если совпадает объекта изображения еще нет в кэше, этот метод загружает изображение данные из указанного файла, кэширует его, а затем возвращает результирующий объект.</p> </blockquote>

<p>создайте uiimageview и добавьте к нему uiimage:</p><pre><code>uiimageview *imageview = [[uiimageview alloc] initwithimage:[uiimage imagenamed:@"image name"]] ; </code></pre><p>затем добавьте его в свой вид: </p><pre><code>[self.view addsubview: imageview]; </code></pre>

<p><strong> просто следуй за этим </strong></p><pre><code>uiimageview *imgview = [[uiimageview alloc]initwithframe:cgrectmake(10, 10, 300, 400)]; [imgview setimage:[uiimage imagenamed:@"yourimagename"]]; [imgview setcontentmode:uiviewcontentmodescaleaspectfit]; [self.view addsubview:imgview]; </code></pre>

<p>в этой строке есть ошибка:</p><pre><code>[img setimage:[uiimage imagenamed@"anyimagename"]]; </code></pre><p>так должно быть:</p><pre><code>[img setimage:[uiimage imagenamed:@"anyimagename"]]; </code></pre>

<pre><code>uiimage *img = [uiimage imagenamed@"aimagename"]; </code></pre>

<p>может быть:</p><pre><code>uiimage *img = [[uiimage alloc] init]; </code></pre><p>и когда вы хотите изменить изображение:</p><pre><code>img = [uiimage imagenamed:@"nameofpng.png"]; </code></pre><p>но объект не был в том же месте в памяти, но если вы используете указатель, тот же самый указатель будет указывать на последнее загруженное изображение.</p>

<p>вы не можете выделить uiimage, это невозможно .... правильный код с uiimageview allocate:</p><pre><code>uiimageview *\_image = [[uiimageview alloc] initwithimage:[uiimage imagenamed:@"something.png"]] ; </code></pre><p>нарисуйте изображение:</p><pre><code>cgcontextdrawimage(context, rect, \_image.image.cgimage); </code></pre>

<p>сначала объявите uiimageview и дайте ему кадр</p><pre><code>uiimageview *imageview = [[uiimageview alloc] initwithframe: cgrectmake( 10.0f, 15.0f, 40.0f,40.0f )]; [imageview setbackgroundcolor: [uicolor clearcolor]]; [imageview setimage:[uiimage imagenamed:@"comments\_profile\_image.png"]]; [self.view addsubview: imageview]; </code></pre>

<p>как сказал vikingosgundo, но имейте в виду, что если вы используете <code>[uiimage imagenamed:image]</code>, то изображение кэшируется и уничтожает память. поэтому, если вы не планируете использовать одно и то же изображение во многих местах, вы должны загрузить изображение, используя <code>imagewithcontentsoffile:</code> и <code>imagewithdata:</code></p><p>это сэкономит вам значительную память и ускорит ваше приложение.</p>

<p>просто измени эту строку </p><pre><code>[img setimage:[uiimage imagenamed:@"anyimagename"]]; </code></pre><p>со следующей строкой</p><pre><code>img = [uiimage imagenamed:@"anyimagename"]; </code></pre>

<p>попробуйте этот код на 100% работать ....</p><pre><code>uiimageview * imageview = [[uiimageview alloc] initwithframe:cgrectmake(20,100, 80, 80)]; imageview.image = [uiimage imagenamed:@"myimage.jpg"]; [self.view addsubview:imageview]; </code></pre>

<p>вы можете установить изображение в объекте eiimage следующим образом:</p><ol> <li><code>uiimage *imageobject = [uiimage imagenamed:@"imagefilename"];</code> , но при такой инициализации объекта <code>uiimage</code> изображение всегда сохраняется в кэш-памяти, даже если вы сделаете его <code>nil</code> наподобие <code>imageobject=nil;</code></li> </ol><p>лучше следовать этому:</p><ol> <li><p><code>nsstring *imagefilepath = [[nsbundle mainbundle] pathforresource:@"imagefilename" oftype:@"imagefile\_extension"];</code></p> <pre><code>uiimage *imageobject = [uiimage imagewithcontentsoffile:imagefilepath]; </code></pre></li> </ol><p>пример: <code>nsstring *imagefilepath = [[nsbundle mainbundle] pathforresource:@"abc" oftype:@"png"];</code></p><pre><code>uiimage *imageobject = [uiimage imagewithcontentsoffile:imagefilepath]; </code></pre>