2013-09-04 13 views
6

Chciałbym rozciągnąć obraz o rozmiarze 170x50 i pokazać go w widoku obrazu o rozmiarze 240x140. Oryginalny obraz wygląda następująco:sposób użycia [UIImage resizableImageWithCapInsets:]

enter image description here

chcę zachować cztery narożniki i tylko rozciągnąć część środkową. Używam następującego kodu:


    UIImage *originalImg = [UIImage imageNamed:@"ImageNamed"]; 
    UIImage *resizeImg = [originalImg resizableImageWithCapInsets:UIEdgeInsetsMake(20 ,10, 10, 10)]; 
    self.originalImgV.image = originalImg; 
    self.resizedImgV.image = resizeImg; 

Zarówno originalImgV, jak i resizedImgV są ustawione na "wypełnienie aspektu". I uruchomić go na simulater, a wynik jest:

enter image description here

Co nie mogę zrozumieć to: resizedImgV ma 2 strzały! Czy ktoś może mi powiedzieć, dlaczego i jak mogę go używać poprawnie? Dzięki

+0

Funkcjonalność resizableImageWithCapInsets to rodzaj układania płytek, a podczas układania obrazów obrazy są powtarzane. Daje to efekt, jakby obraz był powtarzany (2 razy). – yunas

+0

@yuans, jeśli parametr to UIEdgeInsetsMake (30, 10, 10, 10), który ma duży wierzchołek, nadal ma ten sam problem. Jestem na tym stracony ~ Cloud, pomóż mi? – scorpiozj

Odpowiedz

13

Twój problem dotyczy wartości, które przekazałeś do UIEdgeInsetsMake. Wartości są następujące: góra, lewo, dół, prawo. Ze względu na strzałkę w lewym górnym rogu, upewnij się, że twoja lewa wartość jest wystarczająco duża, aby przejść od lewej krawędzi obrazu do prawej strony strzałki.

względu na obraz, który pisał, chcesz coś takiego:

UIEdgeInsetsMake(12, 32, 4, 4) 

BTW - obraz powinien być pozostawiony jedynie + prawy + 1 pikseli szerokości i TOP + dno + 1 pikseli wysokości. Twój wizerunek nie musi być prawie tak duży jak jest.

+0

Masz rację, dziękuję! Nadal mam pytanie: ustawiam UIEdgeInsetsMake (30, 32, 4, 4), który, jak sądzę, jest na tyle duży, że zawiera strzałkę. Ale dlaczego wynik będzie miał dwie strzałki? – scorpiozj

+0

Właściwie zaktualizowałem wartości. Na górze musi być 12, a nie 4. Nie powinieneś dostawać dwóch strzałek ze zaktualizowanymi wstawkami krawędzi. Upewnij się, że masz dwa obrazy - 'bubble.png' (170x50) i' bubble @ 2x.png' (340x100). – rmaddy

+0

BTW - masz dwie strzałki z lewą wstawką 10, ponieważ umieszcza to strzałkę w kafelkowej części skalowalnego obrazu. – rmaddy

0

Za pomocą tej funkcji można zmienić rozmiar UIImage za pomocą tej funkcji.

Mam nadzieję, że to ci pomoże.

+1

Pytanie nie dotyczy proporcjonalnej zmiany rozmiaru obrazu – miniBill

0

Rozciąganie jest przetwarzane w kierunku pionowym, a następnie w kierunku poziomym (lub odwrotnie). Podaj najniższe odchylenia od góry, biorąc pod uwagę kierunek pionowy, który nie powinien się rozciągać i pozostawiał przesunięcia w prawo w stosunku do kierunku poziomego.

Powiązane problemy