当前位置:  编程技术>移动开发
本页文章导读:
    ▪HTC One/M7 电信专版802d升级版,毒蛇工具,网络流量,恒久root,加固信号稳定,流畅ROM        HTC One/M7 电信专版802d升级版,毒蛇工具,网络流量,永久root,加固信号稳定,流畅ROM ROM版本 HTC One/M7 802d ROM作者 大盛 http://weibo.com/DaShengdd Android版本 Android4.2.2 创建日期 2013.09.09 .........
    ▪ 搬动App-UI配制篇        移动App-UI配制篇杂志app-UI配制篇 背景 现在公司有需求是关于杂志app,里面每个页面可能有不同的展现方式,不同的内容,不同的操作方式。那么这里就有一个需求就是根据用户定制这些不.........
    ▪ UIPopoverController的使用,看着很不简单的样子       UIPopoverController的使用,看着很牛逼的样子先看看这个图 要做的样子就是点击下面这个按钮,弹出上面这个带箭头的弹出框 下面来看看怎么搞 #import <UIKit/UIKit.h> @interface UIActionSheetDemoView.........

[1]HTC One/M7 电信专版802d升级版,毒蛇工具,网络流量,恒久root,加固信号稳定,流畅ROM
    来源: 互联网  发布时间: 2014-02-18
HTC One/M7 电信专版802d升级版,毒蛇工具,网络流量,永久root,加固信号稳定,流畅ROM

ROM版本

HTC One/M7 802d

ROM作者

大盛
http://weibo.com/DaShengdd

Android版本

Android4.2.2

创建日期

2013.09.09

ROM大小

840M

MD5验证码

6F6D0A602044680E4062D2F5D6AE6ED5

适用机型

HTC One 电信版(国行)

QQ群

QQ: 177061373

           

                                                     ROM简介:

         声明:该版本只针对HTC one国行电信版本,其他版本请勿刷!
     该版本发布是在9月5号发布的电信版的毒蛇相关ROM:http://www.wanjiquan.com/thread-1877213-1-1.html的升级优化版本,该版本主要是针对有网友反应毒蛇版本ROM的信号有时候不稳定以及wifi容易断线的修复,修改超级用户的问题。准确的来说是再次加强信号和wifi的稳定,因为上一个版本至少我没有测试出来有关信号的点点问题,不会是人品问题吧(嘻嘻 开个玩笑)!该版本添加了很多网友喜欢的状态栏显示网络流量,更进一步巩固版本的稳定性。请放心使用!
   再次重申:该版本是针对国行电信版本的HTC one其他版本请勿刷!该ROM不是完全汉化版本的ViperOne2.1.0ROM,但是功能完全不少,是考虑既要保证原工具的原滋原味,又要符合的用户习惯。更多的功能在这里不再赘述,更多的体验还得自己来体验。


                           功能介绍:

※ 国行电信HTC One稳定升级版
※ 增加状态栏网络流量显示
※ 修复和加固信号的稳定
※ 下拉通知栏传统农历显示
※ 最新ViperOne2.1.0毒蛇工具
※ 新版本的毒蛇侧边栏工具以及毒蛇市场
※ 个性的MIUI电量条以及更多色彩调整
※ 进一步优化刷机脚本
※ 内置天气显示开关
※ 采用最新版本国行内核
※ 修复桌面天气更新延迟的问题
※ 进一步优化系统UI更加稳定快捷
※ 加固侧向桌面工具的稳定流畅
※ 加入最新国内新闻源
※ 更新微博至最新版本
※ 添加最新短信亮屏开关
※ 默认加载全部快捷开关
※ 支持快捷开关的增删
※ 更多实体键短按和长按菜单
※ 添加HTC 小Hi助手
※ 添加高级设置菜单
※ 添加最新来去电归属地数据库文件
※ 内置去除海带条的显示开关
※ 添加状态栏的电池、时钟、图标自定义设置
※ 添加系统桌面4x2模式的时钟插件、天气插件
※ 添加音量上下键唤醒屏幕开关
※ 添加无线扫描间隔选项
※ 电源键选项开关
※ 自定义通知栏快捷开关的选项


                                              更新内容:

更多更新内容如上所述...

同时期待您的反馈和建议,您可以跟帖反馈或者在大盛微博进行反馈和建议...

                                                                截图展示:

  

  

 

 

                了解更多:点击打开链接


    
[2] 搬动App-UI配制篇
    来源: 互联网  发布时间: 2014-02-18
移动App-UI配制篇

杂志app-UI配制篇


背景

现在公司有需求是关于杂志app,里面每个页面可能有不同的展现方式,不同的内容,不同的操作方式。那么这里就有一个需求就是根据用户定制这些不同的展现方式,不同的内容,不同的操作方式,在我们手机端就能正确的展示这些功能。如果一个应用app所有的UI都已经组件化,那么我只需要把这些组件组合拼装就行了,修改配制文件即可。友好的把配制文件的给服务端或者是产品组,让其很容易地修改配制文件。


应用场景

按照我们定义的XML规范进行,考虑到一些情况,除了一些有特殊需求的app,app之前有相似性,应用app的UI符合已有UI组件的要求,业务逻辑相同或相似,UI和业务逻辑分离。


实现原理

根据配制文件定义相关控件或组件,配制其属性。UI引擎解析配制文件,生成对应的控件或组件模型,在需要的时候添加到当前的VIew上。UI引擎大致分为如下几部分,

1.Builder生成器类,2.Element控件或者组件容器类,3.Controller控制器类,处理业务逻辑和UI,4View普通视图类,5.TableView视图类。


从两个方面来看。

第一方面,从程序运行流程来看。

1.当第一次程序运行起来之后,会用Element基类的扩展类RootElement(XMLBuilder),解析配制文件如XML。

2.Builder生成器类把XML里面的结点通过递归的方法,解析成相应的Element控件或组件容器。

3.最终会成一个树形结构在内存中,内存地址根据RootElement对象来取。

4.程序继续往下走,这时会创建一个Controller业务控制器类,这个Controller是从基础业务控制器继承下来。把RootElement的对象指针传给该Controller.

5.把业务控制器赋值给Window的rootViewController,同时让window可见。

6.让window可见时会加载View,系统回调业务控制类的loadView或者viewDidLoad来渲染UI.此时用视图类递归遍历RootElement,根据RootElement容器提供生成View的方法,生成相应的控件或者是组件,addSubView。此时UI渲染完成,呈现给用户了。


第二方面,从程序运行时来看。

我们知道message与方法的真正实现是在执行阶段绑定的,而非编译阶段。编译器会将消息发送转换成对objc_msgSend方法的调用。objc_msgSend(receiver, selector, arg1, arg2, …);

当用户点击设备屏幕时,IOS捕捉到一系列的触摸,将其打包到UIEvent对象中并放置到应用程序活动事件队列中。单例UIApplication对象管理应用程序,从事件队列中取出最前面的事件并将其分发以便处理。通常,其发送事件给应用程序的主窗口——即聚焦于用户交互的窗口——窗口对象代表窗口再发送事件给初始对象进行处理。

在iOS系统中有个很重要的概念:Responder。基本上所有的UI相关的控件,view和viewcontroller都是继承自UIResponder。事件的分发正是通过由控件树所构成的responder chain(响应链)所进行的。


例如一个简单的Button点击事件。

1.当button被按下的时候,系统接收这到个事件,事件经过传递,分发,最终在应用程序的交互窗口的初始控件对象处理。

2.在ButtonElement里监听到这个被按下的事件,先交给父类处理,然后处理自己的逻辑,。

3.依次在ButtonElement--LabelElement--RootElement--Element这个继承树上进行传递。

4.当传递到根结点时即Element,消息就开始分发,消息的分发是动态绑定的,编译器会将消息发送转换成对objc_msgSend方法的调用,objc_msgSend(receiver, selector, arg1, arg2, …);

5.最终消息会分发到指定的Controller里的方法里去执行。处理自己的业务逻辑。



广告时间:

新浪微博: messageloop亮仔


    
[3] UIPopoverController的使用,看着很不简单的样子
    来源: 互联网  发布时间: 2014-02-18
UIPopoverController的使用,看着很牛逼的样子

先看看这个图

要做的样子就是点击下面这个按钮,弹出上面这个带箭头的弹出框

下面来看看怎么搞

#import <UIKit/UIKit.h>

@interface UIActionSheetDemoViewController : UIViewController<UIPopoverControllerDelegate>
{
    UIPopoverController* _popover;
}
#import "UIActionSheetDemoViewController.h"
#import "popController.h"
@implementation UIActionSheetDemoViewController
@synthesize popover = _popover;
#pragma mark - View lifecycle
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    UISegmentedControl* settingView = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"FootballCF",@"BasketballCF",nil]];
    [settingView setSegmentedControlStyle:UISegmentedControlStyleBar];
    [settingView setFrame:CGRectMake(500, 900, 160, 75)];
    [settingView setNeedsLayout];
    [settingView addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:settingView];
    [settingView release];
}
- (void)viewDidUnload
{
    [super viewDidUnload];
    
    if (self.popover != nil) 
{
        [self.popover release];
        self.popover = nil;
    }
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}
-(void)segmentAction:(UISegmentedControl*)seg{
    //清除已经显示的弹出窗口
    if (self.popover.popoverVisible) {
        [self.popover dismissPopoverAnimated:YES];

    }
    //初始化待显示控制器
    popController* controller = [[popController alloc] init];
    //设置待显示控制器的范围
    [controller.view setFrame:CGRectMake(550, 490, 350, 450)];
    //设置待显示控制器视图的尺寸
    controller.contentSizeForViewInPopover = CGSizeMake(350, 450);
    //初始化弹出窗口
    UIPopoverController* pop = [[UIPopoverController alloc] initWithContentViewController:controller];
    controller.popover = pop;
    self.popover = pop;
    self.popover.delegate = self;
    //设置弹出窗口尺寸
    self.popover.popoverContentSize = CGSizeMake(350, 450);
    
    //显示,其中坐标为箭头的坐标以及尺寸
    [self.popover presentPopoverFromRect:CGRectMake(550, 890, 10, 10) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:NO];
    
    [controller release];
    [pop release];
    
    //[self.popover dismissPopoverAnimated:YES];
}
-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController{
    NSLog(@"popover dismiss");
}

@end

#import <UIKit/UIKit.h>

@interface popController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>
{
    UIPopoverController* _popover;
    BOOL isChelsea;
}
@property(nonatomic,retain)UIPopoverController* popover;
@end
#import "popController.h"

@implementation popController
@synthesize popover = _popover;

//定义选项显示内容
const char* chelsea[12] = {"博阿斯","切赫","阿什利科尔","特里","路易斯","伊万诺维奇","兰帕德","拉米雷斯","梅来雷斯","阿内尔卡","德罗巴","托雷斯"};
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        
        
  }
    return self;
}
#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    
    isChelsea = NO;
    
    //添加完成按钮
    UISegmentedControl* doneButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Done", nil]];
    [doneButton setSegmentedControlStyle:UISegmentedControlStyleBar];
    [doneButton setFrame:CGRectMake(self.view.bounds.origin.x+self.view.bounds.size.width-100, self.view.bounds.origin.y+5, 75, 50)];
    [doneButton addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:doneButton];
    [doneButton release];

    //添加选择项
    UISegmentedControl* clubSeg = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Chelsea",@"AC Milan",@"Livupoor",@"Asenal",nil]];
    [clubSeg setSegmentedControlStyle:UISegmentedControlStyleBar];
    [clubSeg setFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75,self.view.bounds.size.width,50)];
  [clubSeg addTarget:self action:@selector(chooseClub:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:clubSeg];
    [clubSeg release];
    
    //添加选择列表
    UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+150, self.view.bounds.size.width,self.view.bounds.size.height)];
    [picker setBounds:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75, self.view.bounds.size.width,self.view.bounds.size.height)];
    picker.delegate = self;
    picker.dataSource = self;
    picker.showsSelectionIndicator = YES;
    [self.view addSubview:picker];
    [picker setTag:101];
    [picker release];
    
    
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return 12;
}
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    if (isChelsea) {
        return [NSString stringWithCString:chelsea[row] encoding:NSUTF8StringEncoding];
    }else{
        return [NSString stringWithFormat:@"chelsea_%d",arc4random()%12];
        ;
    }
    
}
-(void)segmentAction:(UISegmentedControl*)seg{
    [self.view removeFromSuperview];
  [self.popover dismissPopoverAnimated:YES];
}
-(void)chooseClub:(UISegmentedControl*)seg{
    NSInteger index = seg.selectedSegmentIndex;
    UIPickerView* picker = (UIPickerView*)[self.view viewWithTag:101];
    switch (index) {
        case 0:{
            NSLog(@"you choose Chelsea");
            isChelsea = YES;
            [picker reloadAllComponents];
            break;
        }
        case 1:
            NSLog(@"you choose AC Milan");
            isChelsea = NO;
            [picker reloadAllComponents];
        case 2:
            NSLog(@"you choose Livopoor");
            isChelsea = NO;
            [picker reloadAllComponents];
        case 3:
            NSLog(@"you choose Asenal");
            isChelsea = NO;
            [picker reloadAllComponents];
        default:
            break;
    }
}
@end

@property(nonatomic,retain)UIPopoverController* popover;
@end

#import <UIKit/UIKit.h>

@interface UIActionSheetDemoViewController : UIViewController<UIPopoverControllerDelegate>{
    UIPopoverController* _popover;
}
#import "UIActionSheetDemoViewController.h"
#import "popController.h"
@implementation UIActionSheetDemoViewController
@synthesize popover = _popover;
- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    UISegmentedControl* settingView = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"FootballCF",@"BasketballCF",nil]];
    [settingView setSegmentedControlStyle:UISegmentedControlStyleBar];
    [settingView setFrame:CGRectMake(500, 900, 160, 75)];
    [settingView setNeedsLayout];
    [settingView addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:settingView];
    [settingView release];
}


- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    
    if (self.popover != nil) {
        [self.popover release];
        self.popover = nil;
    }
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}
-(void)segmentAction:(UISegmentedControl*)seg{
    //清除已经显示的弹出窗口
    if (self.popover.popoverVisible) {
        [self.popover dismissPopoverAnimated:YES];

    }
    //初始化待显示控制器
    popController* controller = [[popController alloc] init];
    //设置待显示控制器的范围
    [controller.view setFrame:CGRectMake(550, 490, 350, 450)];
    //设置待显示控制器视图的尺寸
    controller.contentSizeForViewInPopover = CGSizeMake(350, 450);
    //初始化弹出窗口
    UIPopoverController* pop = [[UIPopoverController alloc] initWithContentViewController:controller];
    controller.popover = pop;
    self.popover = pop;
    self.popover.delegate = self;
    //设置弹出窗口尺寸
    self.popover.popoverContentSize = CGSizeMake(350, 450);
    
    //显示,其中坐标为箭头的坐标以及尺寸
    [self.popover presentPopoverFromRect:CGRectMake(550, 890, 10, 10) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:NO];
    
    [controller release];
    [pop release];
    
    //[self.popover dismissPopoverAnimated:YES];
}

-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController{
    NSLog(@"popover dismiss");
}

@end
#import <UIKit/UIKit.h>

@interface popController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>{
    UIPopoverController* _popover;
    BOOL isChelsea;
}
@property(nonatomic,retain)UIPopoverController* popover;
@end
#import "popController.h"

@implementation popController
@synthesize popover = _popover;

//定义选项显示内容
const char* chelsea[12] = {"博阿斯","切赫","阿什利科尔","特里","路易斯","伊万诺维奇","兰帕德","拉米雷斯","梅来雷斯","阿内尔卡","德罗巴","托雷斯"};
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        
        
  }
    return self;
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    
    isChelsea = NO;
    
    //添加完成按钮
    UISegmentedControl* doneButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Done", nil]];
    [doneButton setSegmentedControlStyle:UISegmentedControlStyleBar];
    [doneButton setFrame:CGRectMake(self.view.bounds.origin.x+self.view.bounds.size.width-100, self.view.bounds.origin.y+5, 75, 50)];
    [doneButton addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:doneButton];
    [doneButton release];

    //添加选择项
    UISegmentedControl* clubSeg = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Chelsea",@"AC Milan",@"Livupoor",@"Asenal",nil]];
    [clubSeg setSegmentedControlStyle:UISegmentedControlStyleBar];
    [clubSeg setFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75,self.view.bounds.size.width,50)];
  [clubSeg addTarget:self action:@selector(chooseClub:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:clubSeg];
    [clubSeg release];
    
    //添加选择列表
    UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+150, self.view.bounds.size.width,self.view.bounds.size.height)];
    [picker setBounds:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75, self.view.bounds.size.width,self.view.bounds.size.height)];
    picker.delegate = self;
    picker.dataSource = self;
    picker.showsSelectionIndicator = YES;
    [self.view addSubview:picker];
    [picker setTag:101];
    [picker release];
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return 12;
}
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    if (isChelsea) {
        return [NSString stringWithCString:chelsea[row] encoding:NSUTF8StringEncoding];
    }else{
        return [NSString stringWithFormat:@"chelsea_%d",arc4random()%12];
        ;
    }
    
}
-(void)segmentAction:(UISegmentedControl*)seg{
    [self.view removeFromSuperview];
  [self.popover dismissPopoverAnimated:YES];
}
-(void)chooseClub:(UISegmentedControl*)seg{
    NSInteger index = seg.selectedSegmentIndex;
    UIPickerView* picker = (UIPickerView*)[self.view viewWithTag:101];
    switch (index) {
        case 0:{
            NSLog(@"you choose Chelsea");
            isChelsea = YES;
            [picker reloadAllComponents];
            break;
        }
        case 1:
            NSLog(@"you choose AC Milan");
            isChelsea = NO;
            [picker reloadAllComponents];
        case 2:
            NSLog(@"you choose Livopoor");
            isChelsea = NO;
            [picker reloadAllComponents];
        case 3:
            NSLog(@"you choose Asenal");
            isChelsea = NO;
            [picker reloadAllComponents];
        default:
            break;
    }
}
@end



@property(nonatomic,retain)UIPopoverController* popover;
@end
#import <UIKit/UIKit.h>

@interface UIActionSheetDemoViewController : UIViewController<UIPopoverControllerDelegate>{
    UIPopoverController* _popover;
}
#import "UIActionSheetDemoViewController.h"
#import "popController.h"
@implementation UIActionSheetDemoViewController
@synthesize popover = _popover;
- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    UISegmentedControl* settingView = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"FootballCF",@"BasketballCF",nil]];
    [settingView setSegmentedControlStyle:UISegmentedControlStyleBar];
    [settingView setFrame:CGRectMake(500, 900, 160, 75)];
    [settingView setNeedsLayout];
    [settingView addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:settingView];
    [settingView release];
}


- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    
    if (self.popover != nil) {
        [self.popover release];
        self.popover = nil;
    }
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}
-(void)segmentAction:(UISegmentedControl*)seg{
    //清除已经显示的弹出窗口
    if (self.popover.popoverVisible) {
        [self.popover dismissPopoverAnimated:YES];

    }
    //初始化待显示控制器
    popController* controller = [[popController alloc] init];
    //设置待显示控制器的范围
    [controller.view setFrame:CGRectMake(550, 490, 350, 450)];
    //设置待显示控制器视图的尺寸
    controller.contentSizeForViewInPopover = CGSizeMake(350, 450);
    //初始化弹出窗口
    UIPopoverController* pop = [[UIPopoverController alloc] initWithContentViewController:controller];
    controller.popover = pop;
    self.popover = pop;
    self.popover.delegate = self;
    //设置弹出窗口尺寸
    self.popover.popoverContentSize = CGSizeMake(350, 450);
    
    //显示,其中坐标为箭头的坐标以及尺寸
    [self.popover presentPopoverFromRect:CGRectMake(550, 890, 10, 10) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:NO];
    
    [controller release];
    [pop release];
    
    //[self.popover dismissPopoverAnimated:YES];
}

-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController{
    NSLog(@"popover dismiss");
}

@end
#import <UIKit/UIKit.h>

@interface popController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>{
    UIPopoverController* _popover;
    BOOL isChelsea;
}
@property(nonatomic,retain)UIPopoverController* popover;
@end
#import "popController.h"

@implementation popController
@synthesize popover = _popover;

//定义选项显示内容
const char* chelsea[12] = {"博阿斯","切赫","阿什利科尔","特里","路易斯","伊万诺维奇","兰帕德","拉米雷斯","梅来雷斯","阿内尔卡","德罗巴","托雷斯"};
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        
        
  }
    return self;
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    
    isChelsea = NO;
    
    //添加完成按钮
    UISegmentedControl* doneButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Done", nil]];
    [doneButton setSegmentedControlStyle:UISegmentedControlStyleBar];
    [doneButton setFrame:CGRectMake(self.view.bounds.origin.x+self.view.bounds.size.width-100, self.view.bounds.origin.y+5, 75, 50)];
    [doneButton addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:doneButton];
    [doneButton release];

    //添加选择项
    UISegmentedControl* clubSeg = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Chelsea",@"AC Milan",@"Livupoor",@"Asenal",nil]];
    [clubSeg setSegmentedControlStyle:UISegmentedControlStyleBar];
    [clubSeg setFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75,self.view.bounds.size.width,50)];
  [clubSeg addTarget:self action:@selector(chooseClub:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:clubSeg];
    [clubSeg release];
    
    //添加选择列表
    UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+150, self.view.bounds.size.width,self.view.bounds.size.height)];
    [picker setBounds:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75, self.view.bounds.size.width,self.view.bounds.size.height)];
    picker.delegate = self;
    picker.dataSource = self;
    picker.showsSelectionIndicator = YES;
    [self.view addSubview:picker];
    [picker setTag:101];
    [picker release];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return 12;
}
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    if (isChelsea) {
        return [NSString stringWithCString:chelsea[row] encoding:NSUTF8StringEncoding];
    }else{
        return [NSString stringWithFormat:@"chelsea_%d",arc4random()%12];
        ;
    }
    
}
-(void)segmentAction:(UISegmentedControl*)seg{
    [self.view removeFromSuperview];
  [self.popover dismissPopoverAnimated:YES];
}
-(void)chooseClub:(UISegmentedControl*)seg{
    NSInteger index = seg.selectedSegmentIndex;
    UIPickerView* picker = (UIPickerView*)[self.view viewWithTag:101];
    switch (index) {
        case 0:{
            NSLog(@"you choose Chelsea");
            isChelsea = YES;
            [picker reloadAllComponents];
            break;
        }
        case 1:
            NSLog(@"you choose AC Milan");
            isChelsea = NO;
            [picker reloadAllComponents];
        case 2:
            NSLog(@"you choose Livopoor");
            isChelsea = NO;
            [picker reloadAllComponents];
        case 3:
            NSLog(@"you choose Asenal");
            isChelsea = NO;
            [picker reloadAllComponents];
        default:
            break;
    }
}
@end



@property(nonatomic,retain)UIPopoverController* popover;
@end
#import <UIKit/UIKit.h>

@interface UIActionSheetDemoViewController : UIViewController<UIPopoverControllerDelegate>{
    UIPopoverController* _popover;
}
#import "UIActionSheetDemoViewController.h"
#import "popController.h"
@implementation UIActionSheetDemoViewController
@synthesize popover = _popover;
- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    UISegmentedControl* settingView = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"FootballCF",@"BasketballCF",nil]];
    [settingView setSegmentedControlStyle:UISegmentedControlStyleBar];
    [settingView setFrame:CGRectMake(500, 900, 160, 75)];
    [settingView setNeedsLayout];
    [settingView addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:settingView];
    [settingView release];
}


- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    
    if (self.popover != nil) {
        [self.popover release];
        self.popover = nil;
    }
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}
-(void)segmentAction:(UISegmentedControl*)seg{
    //清除已经显示的弹出窗口
    if (self.popover.popoverVisible) {
        [self.popover dismissPopoverAnimated:YES];

    }
    //初始化待显示控制器
    popController* controller = [[popController alloc] init];
    //设置待显示控制器的范围
    [controller.view setFrame:CGRectMake(550, 490, 350, 450)];
    //设置待显示控制器视图的尺寸
    controller.contentSizeForViewInPopover = CGSizeMake(350, 450);
    //初始化弹出窗口
    UIPopoverController* pop = [[UIPopoverController alloc] initWithContentViewController:controller];
    controller.popover = pop;
    self.popover = pop;
    self.popover.delegate = self;
    //设置弹出窗口尺寸
    self.popover.popoverContentSize = CGSizeMake(350, 450);
    
    //显示,其中坐标为箭头的坐标以及尺寸
    [self.popover presentPopoverFromRect:CGRectMake(550, 890, 10, 10) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:NO];
    
    [controller release];
    [pop release];
    
    //[self.popover dismissPopoverAnimated:YES];
}

-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController{
    NSLog(@"popover dismiss");
}

@end
#import <UIKit/UIKit.h>

@interface popController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>{
    UIPopoverController* _popover;
    BOOL isChelsea;
}
@property(nonatomic,retain)UIPopoverController* popover;
@end
#import "popController.h"

@implementation popController
@synthesize popover = _popover;

//定义选项显示内容
const char* chelsea[12] = {"博阿斯","切赫","阿什利科尔","特里","路易斯","伊万诺维奇","兰帕德","拉米雷斯","梅来雷斯","阿内尔卡","德罗巴","托雷斯"};
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        
        
  }
    return self;
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    
    isChelsea = NO;
    
    //添加完成按钮
    UISegmentedControl* doneButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Done", nil]];
    [doneButton setSegmentedControlStyle:UISegmentedControlStyleBar];
    [doneButton setFrame:CGRectMake(self.view.bounds.origin.x+self.view.bounds.size.width-100, self.view.bounds.origin.y+5, 75, 50)];
    [doneButton addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:doneButton];
    [doneButton release];

    //添加选择项
    UISegmentedControl* clubSeg = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Chelsea",@"AC Milan",@"Livupoor",@"Asenal",nil]];
    [clubSeg setSegmentedControlStyle:UISegmentedControlStyleBar];
    [clubSeg setFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75,self.view.bounds.size.width,50)];
  [clubSeg addTarget:self action:@selector(chooseClub:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:clubSeg];
    [clubSeg release];
    
    //添加选择列表
    UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+150, self.view.bounds.size.width,self.view.bounds.size.height)];
    [picker setBounds:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75, self.view.bounds.size.width,self.view.bounds.size.height)];
    picker.delegate = self;
    picker.dataSource = self;
    picker.showsSelectionIndicator = YES;
    [self.view addSubview:picker];
    [picker setTag:101];
    [picker release];
    
    
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return 12;
}
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    if (isChelsea) {
        return [NSString stringWithCString:chelsea[row] encoding:NSUTF8StringEncoding];
    }else{
        return [NSString stringWithFormat:@"chelsea_%d",arc4random()%12];
        ;
    }
    
}
-(void)segmentAction:(UISegmentedControl*)seg{
    [self.view removeFromSuperview];
  [self.popover dismissPopoverAnimated:YES];
}
-(void)chooseClub:(UISegmentedControl*)seg{
    NSInteger index = seg.selectedSegmentIndex;
    UIPickerView* picker = (UIPickerView*)[self.view viewWithTag:101];
    switch (index) {
        case 0:{
            NSLog(@"you choose Chelsea");
            isChelsea = YES;
            [picker reloadAllComponents];
            break;
        }
        case 1:
            NSLog(@"you choose AC Milan");
            isChelsea = NO;
            [picker reloadAllComponents];
        case 2:
            NSLog(@"you choose Livopoor");
            isChelsea = NO;
            [picker reloadAllComponents];
        case 3:
            NSLog(@"you choose Asenal");
            isChelsea = NO;
            [picker reloadAllComponents];
        default:
            break;
    }
}
@end







    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android提高之MediaPlayer播放网络音频的实现方法... iis7站长之家
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3