2015年12月

UI9_UITableView练习

//
// RootViewController.h
// UI9_UITableView练习
//
// Created by YIem on 15/12/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController

@end


//
// RootViewController.m
// UI9_UITableView练习
//
// Created by YIem on 15/12/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "RootViewController.h"
#import "SecondViewController.h"
@interface RootViewController ()<UITableViewDataSource, UITableViewDelegate, PassDelegate>
@property (nonatomic, retain)UITableView *tableView;
@property (nonatomic, retain)NSMutableArray *dataArr;
@property (nonatomic, retain)NSIndexPath *index;// 记录点击的cell位置
@end

- 阅读剩余部分 -

2015-12-17---UI9_UITableView协议方法

//
// RootViewController.m
// UI9_UITableView协议方法
//
// Created by YIem on 15/12/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "RootViewController.h"

@interface RootViewController ()<UITableViewDataSource, UITableViewDelegate>

@end

@implementation RootViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor whiteColor];
//////tableView

UITableView *tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];
tableView.delegate = self;
tableView.dataSource = self;
[self.view addSubview:tableView];
[tableView release];
// tableView的头部脚部区域
// 头 (只有高度起作用)
UIView *header = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
header.backgroundColor = [UIColor redColor];
tableView.tableHeaderView = header;
// 脚(x值和高度起作用)
UIView *foot = [[UIView alloc]initWithFrame:CGRectMake(0, 100, 100, 100)];
foot.backgroundColor  = [UIColor yellowColor];
tableView.tableFooterView = foot;

// tableView结构
// tableHeaderView + tableView + tableFooterView
// tableView -> section + row
// section -> header + row + footer

}

#warning 必须实现的两个协议方法
// 行数

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
    return 10;
    }

  • (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    }
    // 设置cell

  • (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (!cell) {
    cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"] autorelease];
    }

    // 设置
    // indePath 定位信息 包含section和row
    cell.textLabel.text = [NSString stringWithFormat:@"s: %ld, r: %ld", indexPath.section, indexPath.row];
    return cell;
    }
    #pragma mark - 其他协议方法

  • (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
    return 3;
    }
    // 分区头名称

  • (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
    {
    return @"头头头";
    }
    // 分区脚部名称

  • (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
    {
    return @"脚脚脚";
    }

// 自定义头部区域

  • (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
    {
    UIView *header = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    header.backgroundColor = [UIColor grayColor];
    return [header autorelease];
    }
    // 自定义脚部区域
  • (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
    {
    UIView *footer = [[UIView alloc]init];
    footer.backgroundColor = [UIColor blackColor];
    return [footer autorelease];

}
// 高度控制
// 行高

  • (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    return 100;
    }
    // 头部高度
  • (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    {
    return 50;
    }
    // 脚部高度
  • (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
    {
    return 150;
    }
    // tableView右部索引栏
  • (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
    {
    return @[@"a", @"1", @"啦"];
    }

// tableView点击方法

  • (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
    NSLog(@"点击");
    // 取消选中效果
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    }

/* #pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

  • (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    }
    */

@end

UI9_UITableView---

//
// RootViewController.m
// UI9_UITableView
//
// Created by YIem on 15/12/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "RootViewController.h"

@interface RootViewController ()<UITableViewDataSource,UITableViewDelegate>

@end

@implementation RootViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor whiteColor];
///************UITableView 表视图*************////
UITableView *tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];
tableView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:tableView];
[tableView release];


////// 1. 设置代理人
tableView.delegate = self;
tableView.dataSource = self;

// 设置
// 行高
tableView.rowHeight = 100;
// 分割线样式
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
// 分割线颜色
tableView.separatorColor = [UIColor redColor];

}
#warning 实现tableView时 必须实现的两个协议方法
// 1.每个分区中的cell行数

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
    // 前没有设置分区时 默认分区数为1
    return 10;
    }
    // 2.设置每个cell内容
    // 参数1: 触发方法的tableView
    // 参数2: cell的位置信息

  • (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    // indexPath 用于定位每个cell
    // 包含: roe(行号) / section(分区hao)
    #if 0
    // 创建cell
    UITableViewCell *cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil] autorelease];
    // 设置
    // 标题
    cell.textLabel.text = @"姓名";
    // 副标题
    cell.detailTextLabel.text = @"phoneNumber";
    // 图片
    cell.imageView.image = [UIImage imageNamed:@"1"];
    // 辅助视图
    // cell.accessoryType = UITableViewCellAccessoryDetailButton;// 感叹号
    // cell.accessoryType = UITableViewCellAccessoryCheckmark;// 对号
    // cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;// 感叹号,对号
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    // accessoryView 添加视图
    #endif

    // cell的重用机制
    // 1.从重用池中获取cell
    // 参数: 重用机制 (识别不同重用池)
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    // 2.判断cell是否存在
    // !cell 等同 cell == nil
    if (!cell) {
    // 3.创建cell
    // 参数1;cell的样式
    // 参数2: cell的重用标识(区分进入哪个重用池)
    cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"] autorelease];
    #warning 判断中 只写cell创建 不要写赋值
    }
    // 4.设置cell
    cell.textLabel.text = @"标题";
    cell.detailTextLabel.text = @"副标题";
    cell.imageView.image = [UIImage imageNamed:@"1"];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;

// 辅助视图
// 图片

// UIImageView *img = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 30, 30)];
// img.image = [[UIImage imageNamed:@"1"] autorelease];
// cell.accessoryView = img;

// 开关 switch
cell.accessoryView = [[UISwitch alloc]initWithFrame:CGRectMake(0, 0, 30, 30)];


// 将设置好的cell对象返回
return cell;

}

  • (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    }

/* #pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

  • (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    }
    */

@end

ShadowSocks相关软件下载

ShadowSocks相关软件下载
我们把Shadowsocks相关的6个软件打包,打包后文件大小是4M
下载地址是:http://pan.baidu.com/s/1kT67wAr

这里包括:

Shadowsocks客户端(Windows 8/8.1)
Shadowsocks客户端(Windows 7及以下 )
Shadowsocks客户端(Mac OS X)
Shadowsocks客户端(Android)
Firefox浏览器Autoproxy插件
Chrome浏览器插件

转载 小夜博客 http://www.vpsmm.com

ShadowSocks 图文教程

ShadowSocks 图文教程

SS的全称是Shadowsocks,是一种轻量级的加密的socks5网络代理,经本人测试速度比VPN快很多,观看YouTube视频非常流畅,是迄今为止最快的科学工具。下面分别介绍在Windows, Mac OS X, iOS, Android等系统下怎样使用Shadowsocks科学上网。

获取帐号

正常你需要获取ss帐号,包括服务器ip,端口,以及密码。如果您自已有vps,可以使用《一键安装 Shadowsocks Python 版》脚本来一键安装在自已的服务器上,建议设置一个奇葩点的端口和密码。

客户端软件

这里包括全系统的电脑客户端软件:http://pan.baidu.com/s/1kT67wAr

windows系统

在Windows下配置并运行SS客户端软件后,Windows下的多数浏览器(Firefox除外)如IE,Chrome,360,搜狗,猎豹等就可以自动科学上网了。Firefox浏览器要安装插件才可以。

双击客户端图标,状态栏会出现一个飞机的图标,单机图标,就可以来配置相关的帐号和密码了。

mac系统

MAC操作系统相对简单一些,也是双击运行,然后,右上状态栏就会有图标了,配置相关内容即可:

转载 小夜博客 http://www.vpsmm.com

一键安装 ShadowSocks

一键安装 ShadowSocks
OCTOBER 31, 2015 / VPSMM
一键安装脚本,使用比较方便,同时安装一个python管理软件pip。
适用于常见的linux系统,像centos,ubuntu,debian均能正确安装。

安装脚本

wget soft.vpsmm.com/shadowsocks.sh
chmod +x shadowsocks.sh
./shadowsocks.sh
安装过程中会提示,输入端口,密码等信息,可以自定义。另外在安装完成后,也会有相关提示。

卸载

./shadowsocks.sh uninstall
管理命令

启动:/etc/init.d/shadowsocks start
停止:/etc/init.d/shadowsocks stop
重启:/etc/init.d/shadowsocks restart
状态:/etc/init.d/shadowsocks status

alpharacks-圣诞促销/VPS年付低至2.99美元/独立IPv4, 科学上网必备!

基于openvz虚拟,硬盘raid10,网络为100M端口共享,支持TUN/TAP and PPP,solusvm面板...

科学上网

科学上网

alpharacks官网

屏幕快照 2015-12-16 下午7.23.22.png

64内存 ----- 96内存 ----- 128内存 ----- 512内存
2 G硬盘 ----- 5 G硬盘 ----- 8 G硬盘 ----- 10 G硬盘
100 G流量 ----- 150 G流量 ----- 500 G流量 ----- 1000 G流量
1 IPv4 ----- 1 IPv4 ----- 1 IPv4 ----- 1 IPv4
100M端口 ----- 100M端口 ----- 100M端口 ----- 100M端口
年付:$2.99 ----- 年付:$3.99 ----- 年付:$5.99 ----- 年付:$9.99
点击购买 ----- 点击购买 ----- 点击购买 ----- 点击购买

1024内存
15 G硬盘
1500 G流量
1 IPv4
100M端口
年付:$14
点击购买


2048内存
25 G硬盘
3000 G流量
1 IPv4
1000M端口
年付:$21
点击购买

科学上网安装方式

一键安装 ShadowSocks

ShadowSocks相关软件下载

ShadowSocks 图文教程

UI8_轮播图-图片无限滚动iOS

屏幕快照 2015-12-16 下午7.14.14.png
// RootViewController.m
// UI8_轮播图
//

// Created by YIem on 15/12/16.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "RootViewController.h"

@interface RootViewController ()

@property (nonatomic, retain) UIScrollView *scrollView;
@property (nonatomic, retain) UIPageControl *page;
@property (nonatomic, retain) NSTimer *timer;

@end

@implementation RootViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.view.backgroundColor = [UIColor whiteColor];

    self.title = @"轮播图";

- 阅读剩余部分 -

2015-15-16--UI8_练习--传值练习

//
// AppDelegate.h
// UI8_练习
//
// Created by YIem on 15/12/16.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder

@property (retain, nonatomic) UIWindow *window;

@end

- 阅读剩余部分 -

2015-12-16-UI8_Block-----block 快语法(闭包)

//
// AppDelegate.h
// UI8_Block
//
// Created by YIem on 15/12/16.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder

@property (retain, nonatomic) UIWindow *window;

@end


//
// AppDelegate.m
// UI8_Block
//
// Created by YIem on 15/12/16.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "AppDelegate.h"
#import "RootViewController.h"
@interface AppDelegate ()

@end

@implementation AppDelegate

-(void)dealloc
{
[_window release];
[super dealloc];
}

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    RootViewController *rotVC = [[RootViewController alloc]init];
    UINavigationController *navi = [[UINavigationController alloc]initWithRootViewController:rotVC];
    self.window.rootViewController = navi;

    [rotVC release];
    [navi release];

    /***** Block 快语法******/

[_window release];
return YES;

}

  • (void)applicationWillResignActive:(UIApplication *)application {
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
    }

  • (void)applicationDidEnterBackground:(UIApplication *)application {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    }

  • (void)applicationWillEnterForeground:(UIApplication *)application {
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
    }

  • (void)applicationDidBecomeActive:(UIApplication *)application {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    }

  • (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    }

@end

- 阅读剩余部分 -

2015-15-16- UI8_协议传值

//
// AppDelegate.h
// UI8_协议传值
//
// Created by YIem on 15/12/16.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder

@property (retain, nonatomic) UIWindow *window;

@end

- 阅读剩余部分 -

2015-12-16-UI7_作业2-创建三个页⾯面,

创建三个页⾯面,要求: 1.登陆页⾯面LoginViewController,可以输⼊入⽤用户名和密码, 导航栏右侧放置添加按钮,可以通过添加按钮模态到注册 页⾯面。 2.注册页⾯面RegisterViewController,填写⽤用户名,密码, 确认密码后注册。 3.欢迎页⾯面WelcomeViewController,由登陆页⾯面push得 到。

//
// AppDelegate.h
// UI7_作业2
//
// Created by YIem on 15/12/15.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder

@property (retain, nonatomic) UIWindow *window;

@end

- 阅读剩余部分 -

2015-12-16 UI7作业1--创建三个控制器

//
创建三个控制器 要求 :
1.命名 First ~ Third。 2.分别设置背景颜⾊色红、灰、蓝。 3.如⽰示例完成⾃自定义导航栏。

//
// AppDelegate.h
// UI7_作业
//
// Created by YIem on 15/12/15.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder

@property (retain, nonatomic) UIWindow *window;

@end

- 阅读剩余部分 -

2015-12-16 - UI7-----练习

//
// RootViewController.m
// UI7_练习
//
// Created by YIem on 15/12/15.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "RootViewController.h"

@interface RootViewController ()

@end

@implementation RootViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor redColor];

    /// 要求
    // 1.创建工程 设置导航为根视图 rootVC为导航的根视图
    // 2.rootVC中创建一个和屏幕一样大的scrollView 让scrollView可以滚动
    // 3.新建一个UIView对象 添加在scrollView上 frame为(0, 0, 100, 100)
    // UIView *aview = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
    // aview.backgroundColor = [UIColor yellowColor];
    // [self.view addSubview:aview];
    // [aview release];

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 375 / 2, 667)];
    scrollView.backgroundColor = [UIColor yellowColor];
    scrollView.contentSize = CGSizeMake(1000, 1000);
    [self.view addSubview:scrollView];
    [scrollView release];
    //
    UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    aView.backgroundColor = [UIColor cyanColor];
    [scrollView addSubview:aView];
    [aView release];
    // 多个页面

    UIScrollView *scrollView1 = [[UIScrollView alloc] initWithFrame:CGRectMake(375 / 2, 0, 375 / 2, 667)];
    scrollView1.backgroundColor = [UIColor redColor];
    scrollView1.contentSize = CGSizeMake(self.view.frame.size.width * 4, 0);
    [self.view addSubview:scrollView1];
    [scrollView1 release];
    //
    UIView *aView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    aView1.backgroundColor = [UIColor cyanColor];
    [scrollView1 addSubview:aView1];
    [aView1 release];

    ///*******<滑动视图自适应边界预留值>*** // VC 中的第一个滑动视图会自动添加一个上边距
    self.automaticallyAdjustsScrollViewInsets = YES;
    ////****< >
    // 导航栏不透明时 坐标系统一没问题
    self.navigationController.navigationBar.translucent = NO;

// 标题
UISegmentedControl *seg = [[UISegmentedControl alloc]initWithItems:@[@"电话", @"聊天"]];
seg.frame = CGRectMake(100, 100, 100, 40);
seg.selectedSegmentIndex = 0;
self.navigationItem.titleView = seg;
[seg release];

}

  • (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    }

/* #pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

  • (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    }
    */

@end

2015-12-16--UI7_页面跳转 - 传值

//
// AppDelegate.h
// UI7_页面跳转
//
// Created by YIem on 15/12/15.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder

@property (retain, nonatomic) UIWindow *window;

@end

- 阅读剩余部分 -