那麼下面用一種簡單的方法來實現它。
主要通過
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方便 這個問題也...