iPhone開發 類似iChat的聊天泡泡示例

2021-09-08 00:09:25 字數 2786 閱讀 6017

那麼下面用一種簡單的方法來實現它。

主要通過

uilabel的sizetofit方法自動計算文字區域大小

uiimage的- (uiimage *)stretchableimagewithleftcapwidth:(nsinteger)leftcapwidth topcapheight:(nsinteger)topcapheight;方法拉伸

可以根據文字內容自動適應算泡泡高度

- (uiimage *)stretchableimagewithleftcapwidth:(nsinteger)leftcapwidth topcapheight:(nsinteger)topcapheight;的含義是

橫向從leftcapwidth+1個畫素開始,該畫素被橫向無限複製,作為中間部分,剩餘部分又被鏈結到一起組成整張圖

縱向從topcapheight+1個畫素開始,該畫素被縱向無限複製,作為中間部分,剩餘部分又被鏈結到一起組成整張圖

所有拉伸後的不會變模糊。

效果如下,先上圖

所要用到的資源

和定義乙個類chatpopview,**日下

#import

typedef enum tagpopdirection

epopdirectionleft = 0,

epopdirectionright

}epopdirection;

@inte***ce chatpopview : uiview else {

theimage = [uiimage imagenamed:@"ssmessagetableviewcellbackgroundclear"];

popbackground.image = [theimage stretchableimagewithleftcapwidth:21 topcapheight:15];

[self addsubview:popbackground];

uilabel *content = [[uilabel alloc] initwithframe:cgrectmake(15, 5, frame.size.width - 15, frame.size.height)];

self.contentlabel = content;

[content release];

contentlabel.numberoflines = 0;

contentlabel.backgroundcolor = [uicolor clearcolor];

[self addsubview:contentlabel];

return self;

-(void)settext:(nsstring *)str{

contentlabel.text = str;

[contentlabel sizetofit];

[self setneedslayout];

-(void)layoutsubviews{

[super layoutsubviews];

self.frame = cgrectmake(self.frame.origin.x, self.frame.origin.y, contentlabel.frame.size.width+30, contentlabel.frame.size.height+15);

popbackground.frame = cgrectmake(0, 0, self.frame.size.width, self.frame.size.height);

- (void)dealloc {

[popbackground release];

[contentlabel release];

[super dealloc];

我們可以這樣使用

[self.window makekeyandvisible];

chatpopview *pop1 = [[chatpopview alloc] initwithframe:cgrectmake(20, 100, 200, 80) popdirection:epopdirectionleft];

[self.window addsubview:pop1];

chatpopview *pop2 = [[chatpopview alloc] initwithframe:cgrectmake(130, 220, 200, 40) popdirection:epopdirectionright];

[self.window addsubview:pop2];

[pop2 settext:@"this can occur for certain types of..."];

chatpopview *pop3 = [[chatpopview alloc] initwithframe:cgrectmake(20, 300, 280, 300) popdirection:epopdirectionleft];

[self.window addsubview:pop3];

[pop3 settext:@""];

chatpopview *pop4 = [[chatpopview alloc] initwithframe:cgrectmake(230, 400, 200, 40) popdirection:epopdirectionright];

[self.window addsubview:pop4];

[pop4 settext:@""];

[pop1 release];

return yes;

iPhone開發 類似iChat的聊天泡泡示例

那麼下面用一種簡單的方法來實現它。主要通過 uilabel的sizetofit方法自動計算文字區域大小 uiimage的 uiimage stretchableimagewithleftcapwidth nsinteger leftcapwidth topcapheight nsinteger to...

類似iPhone的彈性ListView滾動

從2.3開始,android開始支援listview的overscroll,應該很方便可以做出類似iphone的彈性滾動,及越過list頂端或者底端,然後彈性滾回。昨天google了半天的例子,乙個沒找到,今天又試了試,發現用很簡單的方式就可以實現這個效果。大致如下 繼承listview priva...

iPhone遊戲開發

總的來說這個問題比較好解決,xcode新建的工程中就有opengl es這一項,基本的呼叫關係都給你弄好了。下面說說我開發的過程 說到底我絕大多數時間還是在win平台下進行開發的,儘管業界說mac的系統如何如何好,xcode功能如何如何強大,但還是感覺沒有windows好用,沒有vs方便 這個問題也...