UIButton的圖文混排

我們常常需要用到按鈕需要文字和圖片同時顯示,例如: 

我們需要定義一個UIButton的子類

實現文件

- ( id )initWithFrame:( CGRect )frame

{

self = [ super initWithFrame :frame];

if ( self ) {

        //可根據自己的需要隨意調整

        self . titleLabel . textAlignment = NSTextAlignmentRight ;

self . titleLabel . font =[ UIFont systemFontOfSize : 14.0 ];

        self . imageView . contentMode = UIViewContentModeLeft ;

}

    return self ;

}

//重寫父類UIButton的方法

//更具button的rect設定並返回文本label的rect

- ( CGRect )titleRectForContentRect:( CGRect )contentRect

{

CGFloat titleW = contentRect. size . width - 30 ;

CGFloat titleH = contentRect. size . height ;

CGFloat titleX = 0 ;

CGFloat titleY = 0 ;

contentRect = ( CGRect ){{titleX,titleY},{titleW,titleH}};

return contentRect;

}

//更具button的rect設定並返回UIImageView的rect

- ( CGRect )imageRectForContentRect:( CGRect )contentRect

{

CGFloat imageW = 25 ;

CGFloat imageH = 25 ;

CGFloat imageX = contentRect. size . width - 26 ;

CGFloat imageY = 2.5 ;

contentRect = ( CGRect ){{imageX,imageY},{imageW,imageH}};

return contentRect;

}

//使用UIButton的子類

yxpButton *selectAreaButton=[[ yxpButton alloc ] initWithFrame : CGRectMake ( 200 , 5 , 100 , 30 )];

    [selectAreaButton setTitle : @"圖文混排" forState : UIControlStateNormal ];

    [selectAreaButton setImage :[ UIImage imageNamed : @"location" ] forState : UIControlStateNormal ];

    [selectAreaButton setTitleColor :[ UIColor whiteColor ] forState : UIControlStateNormal ];

[navigationBgView addSubview :selectAreaButton];

就這樣 就可以實現一個按鈕的圖文混排了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章