当前位置: 编程技术>移动开发
本页文章导读:
▪模拟HUD, 乃是那种loading等待的对话框框 模拟HUD, 就是那种loading等待的对话框框
这个是网上抄袭的,改了改:
#import <UIKit/UIKit.h>
@interface LoadingView : UIView {
@private
UIActivityIndicatorView *activityView;
UIView *container;
}
- (id)initWithUIVie.........
▪ 那类别似toolbar可以提拖动的 那种类似toolbar可以提拖动的
最开始, 是想利用toolBar来着,可惜好多原因(忘了?好像是图片要自动给你光化,如果利用custom button也有这些那些的问题, 还有就是间距什么的, 位置也不好算).
最终.........
▪ 播音接收者(BroadcastReceiver) 广播接收者(BroadcastReceiver)
广播接收者(BroadcastReceiver)用于异步接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()来实现.........
[1]模拟HUD, 乃是那种loading等待的对话框框
来源: 互联网 发布时间: 2014-02-18
模拟HUD, 就是那种loading等待的对话框框
这个是网上抄袭的,改了改:
#import <UIKit/UIKit.h>
@interface LoadingView : UIView {
@private
UIActivityIndicatorView *activityView;
UIView *container;
}
- (id)initWithUIView:(UIView *)aView message:(NSString *)msg;
- (void) show;
- (void) hide;
@end
#import "LoadingView.h"
@implementation LoadingView
- (id)initWithUIView:(UIView *)aView message:(NSString *)msg {
CGRect containerBounds = aView.bounds;
if ((self = [super initWithFrame:aView.bounds])) {
UIColor* bgColor = [[UIColor alloc] initWithRed: 128/255.0 green:138/255.0 blue:135/255.0 alpha:1];
[self setBackgroundColor:bgColor];
[bgColor release];
UIView *content = [[UIView alloc] initWithFrame:CGRectMake((containerBounds.size.width - 200) / 2, (containerBounds.size.height - 100) / 2, 200, 100)];
UIImageView *imageview = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"rssloading.png"]];
imageview.frame = CGRectMake(0.0, 0.0, content.frame.size.width, content.frame.size.height);
[content addSubview:imageview];
[imageview release];
activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
activityView.frame = CGRectMake(80, 20, 37.0f, 37.0f);
[content addSubview:activityView];
CGRect nameLabelRect = CGRectMake(0, 60, 200, 25);
UILabel *titleLable = [[UILabel alloc] initWithFrame:nameLabelRect];
titleLable.textAlignment = UITextAlignmentCenter;
titleLable.text = msg;
titleLable.font = [UIFont boldSystemFontOfSize:18];
titleLable.alpha = 0.8;
titleLable.backgroundColor = [UIColor clearColor];
titleLable.textColor = [UIColor whiteColor];
[content addSubview: titleLable];
[titleLable release];
[self addSubview:content];
[content release];
[self setAlpha:0.67];
[self setHidden:YES];
container = aView;
[container retain];
}
return self;
}
-(void) show {
[container addSubview:self];
[activityView startAnimating];
[self setHidden:NO];
}
-(void) hide {
[activityView stopAnimating];
[self setHidden:YES];
[self removeFromSuperview];
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/
- (void)dealloc {
[activityView release];
[container release];
[super dealloc];
}
@end
效果图:
[2] 那类别似toolbar可以提拖动的
来源: 互联网 发布时间: 2014-02-18
那种类似toolbar可以提拖动的
最开始, 是想利用toolBar来着,可惜好多原因(忘了?好像是图片要自动给你光化,如果利用custom button也有这些那些的问题, 还有就是间距什么的, 位置也不好算).
最终, 利用普通button + UIView + UIScrollView实现了个. 另外还悲剧的发现, 好像按钮没有长按时的那种事件..也是利用Timer自己搞.
@interface ScrollToolBar2 : UIView<UIScrollViewDelegate> {
UIScrollView *buttonView;
UIButton *leftButton;
UIButton *rightButton;
UIButton *selectedButton;
int isTouchHold;
NSTimer *timer;
}
- (id)initWithFrame:(CGRect)frame defaultClickButtonPosition:(int)pos images:(UIImage *)firstImg, ...;
@end
#import "ScrollToolBar2.h"
#define BUTTON_LEFT_SPACE 10
#define BUTTON_RIGHT_SPACE 10
#define BUTTON_ITEM_SPACE 10
#define BUTTON_MOVE_SPACE 6
@implementation ScrollToolBar2
void switchBtnState(UIButton *button)
{
UIImage *imgA = [button imageForState:UIControlStateNormal];
UIImage *imgB = [button imageForState:UIControlStateHighlighted];
[imgA retain];
[imgB retain];
[button setImage:imgB forState:UIControlStateNormal];
[button setImage:imgA forState:UIControlStateHighlighted];
[imgA release];
[imgB release];
}
- (void) toggle:(UIButton *) button
{
if (selectedButton == button) {
return;
}
if (selectedButton)
{
switchBtnState(selectedButton);
}
selectedButton = button;
switchBtnState(button);
float width = buttonView.frame.size.width;
CGRect rect = button.frame;
float offsetCenter = buttonView.contentOffset.x + width / 2;
if((rect.origin.x + rect.size.width / 2) < offsetCenter) { // button in left
float offset = rect.origin.x - (offsetCenter - rect.size.width / 2);
CGPoint contentOffset = buttonView.contentOffset;
contentOffset.x = contentOffset.x + offset;
contentOffset.x = contentOffset.x < 0 ? 0 : contentOffset.x;
[buttonView setContentOffset:contentOffset animated:YES];
}
else { //button in right
float offset = rect.origin.x - (offsetCenter - rect.size.width / 2);
CGPoint contentOffset = buttonView.contentOffset;
contentOffset.x = contentOffset.x + offset;
contentOffset.x = contentOffset.x > (buttonView.contentSize.width - width) ? (buttonView.contentSize.width - width) : contentOffset.x;
[buttonView setContentOffset:contentOffset animated:YES];
}
}
- (id)initWithFrame:(CGRect)frame defaultClickButtonPosition:(int)pos images:(UIImage *)firstImg, ...
{
if ((self = [super initWithFrame:frame]))
{
UIButton *defaultClickBtn = nil;
isTouchHold = 0;
int i = 0;
float totalWidth = BUTTON_LEFT_SPACE;
va_list params;
va_start(params, firstImg);
UIImage *now = va_arg(params,UIImage *);
UIImage *prev = firstImg;
NSMutableArray *buttons = [[NSMutableArray alloc] init];
while(firstImg)
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:prev forState:UIControlStateNormal];
[button setImage:now forState:UIControlStateHighlighted];
[button addTarget:self action:@selector(toggle:) forControlEvents:UIControlEventTouchDown];
button.frame = CGRectMake(totalWidth, 0, prev.size.width, prev.size.height);
button.tag = i;
if (i == pos) {
defaultClickBtn = button;
[defaultClickBtn retain];
}
totalWidth += prev.size.width + BUTTON_ITEM_SPACE;
[buttons addObject:button];
i++;
prev = va_arg(params,UIImage *);
if(prev == nil)
{
break;
}
now = va_arg(params,UIImage *);
}
totalWidth = totalWidth - BUTTON_ITEM_SPACE + BUTTON_RIGHT_SPACE;
buttonView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, frame.size.width, frame.size.height)];
buttonView.pagingEnabled = NO;
buttonView.contentSize = CGSizeMake(totalWidth, frame.size.height);
buttonView.showsHorizontalScrollIndicator = NO;
buttonView.showsVerticalScrollIndicator = NO;
buttonView.scrollsToTop = NO;
for(id btn in buttons)
{
[buttonView addSubview:btn];
}
UIImage *leftBtnImg = [UIImage imageNamed:@"submenu_left"];
leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
leftButton.frame = CGRectMake(0.0, 0.0, leftBtnImg.size.width, leftBtnImg.size.height);
[leftButton setImage:leftBtnImg forState:UIControlStateNormal];
[leftButton retain];
[leftButton addTarget:self action:@selector(offsetButtonTouchBegin:) forControlEvents:UIControlEventTouchDown];
[leftButton addTarget:self action:@selector(offsetButtonTouchEnd:) forControlEvents:UIControlEventTouchUpInside];
[leftButton addTarget:self action:@selector(offsetButtonTouchEnd:) forControlEvents:UIControlEventTouchUpOutside];
UIImage *rightBtnImg = [UIImage imageNamed:@"submenu_right"];
rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
rightButton.frame = CGRectMake(frame.size.width - rightBtnImg.size.width, 0.0, rightBtnImg.size.width, rightBtnImg.size.height);
[rightButton setImage:rightBtnImg forState:UIControlStateNormal];
[rightButton retain];
[rightButton addTarget:self action:@selector(offsetButtonTouchBegin:) forControlEvents:UIControlEventTouchDown];
[rightButton addTarget:self action:@selector(offsetButtonTouchEnd:) forControlEvents:UIControlEventTouchUpInside];
[rightButton addTarget:self action:@selector(offsetButtonTouchEnd:) forControlEvents:UIControlEventTouchUpOutside];
UIImage *submenuBGImg = [UIImage imageNamed:@"submenu.png"];
UIImageView *backgroundImg = [[UIImageView alloc] initWithImage:submenuBGImg];
[self addSubview:backgroundImg];
[self addSubview:buttonView];
[self addSubview:leftButton];
[self addSubview:rightButton];
[self scrollViewDidEndDecelerating:buttonView ];
[buttonView setDelegate:self];
[backgroundImg release];
[buttons release];
if(defaultClickBtn) {
[self toggle:defaultClickBtn];
[defaultClickBtn release];
}
}
return self;
}
- (void) transformation
{
if (!timer) return;
NSNumber *number = [timer userInfo];
int offset = [number intValue];
CGPoint offsetPoint = buttonView.contentOffset;
offsetPoint.x = offsetPoint.x + offset;
if (offsetPoint.x <= 0)
{
offsetPoint.x = 0;
[timer invalidate];
[timer release];
timer = nil;
}
else if(offsetPoint.x >= (buttonView.contentSize.width - buttonView.frame.size.width))
{
offsetPoint.x = buttonView.contentSize.width - buttonView.frame.size.width;
isTouchHold = 0;
[timer invalidate];
[timer release];
timer = nil;
}
buttonView.contentOffset = offsetPoint;
}
- (void) startTimer:(id) sender
{
int space = sender == leftButton ? BUTTON_MOVE_SPACE * -1 : BUTTON_MOVE_SPACE;
NSNumber *number = [[NSNumber alloc] initWithInt:space];
timer = [NSTimer scheduledTimerWithTimeInterval:0.005 target:self selector:@selector(transformation) userInfo:number repeats:YES];
[timer retain];
[number release];
}
- (void) offsetButtonTouchBegin:(id) sender
{
isTouchHold = sender == leftButton ? -6 : 6;
[self startTimer:sender];
}
- (void) offsetButtonTouchEnd:(id) sender
{
[timer invalidate];
[timer release];
timer = nil;
isTouchHold = 0;
}
void changeHiddenForButton(UIButton *button, BOOL isHidden)
{
float alpha = isHidden ? 0.0 : 1.0;
if (button.alpha == alpha) return;
[UIView beginAnimations: nil context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1];
button.alpha = alpha;
[UIView commitAnimations];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[self scrollViewDidEndDecelerating:scrollView];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
float offset = scrollView.contentOffset.x;
if (offset <= 0)
{
changeHiddenForButton(leftButton, YES);
}
else
{
changeHiddenForButton(leftButton, NO);
}
if(offset >= (scrollView.contentSize.width - scrollView.frame.size.width))
{
changeHiddenForButton(rightButton, YES);
}
else
{
changeHiddenForButton(rightButton, NO);
}
}
- (void)dealloc
{
[buttonView release];
[super dealloc];
}
@end
这下代码够完整了吧...给公司写的,但是未经过测试,保佑不被老大发现.哈哈, 其实没啥技术含量, 反正都是你抄我, 我抄你..就是计算那些坐标系很是麻烦的说..
效果图:
[3] 播音接收者(BroadcastReceiver)
来源: 互联网 发布时间: 2014-02-18
广播接收者(BroadcastReceiver)
广播接收者(BroadcastReceiver)
用于异步接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()来实现的。通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收,广播接收者和JMS中的Topic消息接收者很相似。要实现一个广播接收者方法如下:
第一步:继承BroadcastReceiver,并重写onReceive()方法。
public class IncomingSMSReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
}
}
第二步:订阅感兴趣的广播Intent,订阅方法有两种:
第一种:使用代码进行订阅
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver receiver = new IncomingSMSReceiver();
registerReceiver(receiver, filter);
第二种:在AndroidManifest.xml文件中的<application>节点里进行订阅:
<receiver android:name=".IncomingSMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
广播接收者(BroadcastReceiver)
用于异步接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()来实现的。通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收,广播接收者和JMS中的Topic消息接收者很相似。要实现一个广播接收者方法如下:
第一步:继承BroadcastReceiver,并重写onReceive()方法。
public class IncomingSMSReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
}
}
第二步:订阅感兴趣的广播Intent,订阅方法有两种:
第一种:使用代码进行订阅
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver receiver = new IncomingSMSReceiver();
registerReceiver(receiver, filter);
第二种:在AndroidManifest.xml文件中的<application>节点里进行订阅:
<receiver android:name=".IncomingSMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
最新技术文章: