2014年1月21日星期二

微信路况会不会超越地图导航?

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
微信路况会不会超越地图导航?  阅读原文»

微信路况会不会超越地图导航?

  近日,微信公众平台用户量最大的公众号"微信路况"与康盛"微社区"达成合作,成立国内首家路况主题微社区"路况社区"。从目前了解的信息情况来看,这个"路况社区"可让车主快速获取周边或指定地点的实时路况信息,并且实现与其他车主适时交流的需求。

wKioL1Ld5AjTFy0WAAGvsPzfWC4295.jpg

  看到这个消息,我的第一反应就是各地图导航软件会不会从此没活路了?

  微信路况这个账号的开通时间不长,但用户数已经突破500万规模,其发展"前景"与"钱景"都很可观(罗辑思维如果估值过亿的话,微信路况得估值几个亿呢?)。我倒认为用户量等都还不是重点,在我看来,重点是这个公众账号在互动模式方面嵌入了全新的UGC理念,即车主与其他车主之间可实现适时的在线交流。

  这就是说,用户在使用其他导航的软件的时候,只能听到系统发来的语音提示,但在这个"路况社区"微社区里,用户除了可听到张三李四王麻子的提示之外,还可以可听到章子怡徐静蕾和柳岩的语音提示。因为这个"路况社区",是全方面可让用户适时交流和发起适时路况的UGC社区,而这也是这款产品与其他产品最大的不同,也是最具价值的地方。

  UGC方式给予车友用户全新的路况信息,并且形成在线可交流的平台,仅仅这点优势,就已经将传统导航甩开一段距离了吧?

  但是我觉得这些都不足以完全概括这款路况应用的实质,在我看来,真正能定义这款应用价值的地方,在于"微信路况"开启了WEB2.0社区与微信公众号结合的方式,使得微信通过微社区将更多的用户集中起来,并实现真正意义上的"社区价值"与"UGC内容"。

  传统意义上的微信公众平台,实现的是公众号运营方与用户的点对点单向沟通,而微社区解决了用户与用户之间的沟通问题;微信公众号只能单向推送内容,而微社区则促使用户从被动的信息接收者转向移动互联网信息创造者,在用户与用户之间的互动中共同完成内容制造和传播。"微信路况"就是充分利用用户之间的路况信息分享,实现所有车友均可第一时间知晓路况信息的交流社区。

  所以,我认为"微信路况"的价值,在于实现了交通信息在微信上的商业模式突破;另一方面,"路况社区"也体现了微社区的应用价值,就平台而言,以后所有在微信平台发展,并且需要web2.0交互与UGC内容的群体,都可能选择微社区作为其手机上的社区平台。

  (作者简介:朱翊,80后生人,互联网媒体人、知名博客作者,长期混迹于互联网圈,参与过多起商业公关和市场营销执行工作,信仰互联网,长期关注中文互联网商业趋势及案例研究,现从事公关传播与创新营销工作。个人微信号:izhuyi;个人公众平台帐号:zhuyiweixin)

疯狂ios讲义之代码控制UI界面  阅读原文»

疯狂ios讲义之代码控制UI界面

通过前面的介绍我们已经了解了iOS开发的基本方法和步骤实际上只要掌握了这些基本的方法和步骤我们就可以对iOS应用进行更多的控制。前面介绍的开发方式是使用xib或Storyboard文件设计iOS应用界面这也是iOS开发的最主要方式在某些极端的情况下我们也有可能不使用任何界面设计文件直接通过代码来开发UI界面。

9.5.1 不使用界面布局文件开发UI界面

如果打算使用纯代码来开发UI界面则不需要设计任何界面布局文件没有界面布局文件也就不再需要使用自定义的视图控制器。这样程序可以直接在应用程序委托对象的application: didFinishLaunchingWithOptions:方法中创建UIWindow和应用程序界面――所有这些对象的创建都使用objective-C代码来完成。

实例无界面布局文件开发iOS应用

首先创建一个iOS的Empty Application应用。在创建iOS应用时选择"Empty Application"项即可如图9.35所示。

1390204145

图9.35 创建iOS的EmptyApplication应用

对于"Empty Application"类型的iOS应用Xcode只生成应用程序委托类不会生成任何界面设计文件也不会生成任何控制器类。

对于打算使用纯代码开发UI界面的开发方式来说我们的应用并不需要任何界面设计文件也不需要任何控制器。程序只要修改应用程序委托的application:didFinishLaunchingWithOptions:方法并在该方法中创建UI控件然后利用这些UI控件搭建应用程序界面即可。下面是修改过的application:didFinishLaunchingWithOptions:方法代码。

程序清单codes/09/9.5/CodeUI/ CodeUI/FKAppDelegate.m

// 应用程序加载完成后将会自动回调该方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
// 创建UIWindow对象并将该UIWindow初始化为与屏幕相同大小
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 设置UIWindow的背景色
self.window.backgroundColor = ;
// 创建一个UIViewController对象
UIViewController* controller = [[UIViewController alloc] init];
// 让该程序的窗口加载并显示viewController视图控制器关联的用户界面
self.window.rootViewController = controller;
UIView* rootView = [[UIView alloc] initWithFrame
:[[UIScreen mainScreen] bounds]];
// 设置controller显示rootView控件
controller.view = rootView;
UIButton* button = ;
button.frame = CGRectMake(120, 100, 80, 40);
;
// 将按钮添加到rootView控件中
[rootView addSubview:button];
// 创建一个UILabel对象
self.show = [[UILabel alloc] initWithFrame
:CGRectMake(60 , 40 , 180 , 30)];
// 将UILabel添加到rootView控件中
[rootView addSubview:self.show];
// 设置UILabel默认显示的文本
self.show.text = @"初始文本";
self.show.backgroundColor = ;
// 为圆角按钮的触碰事件绑定事件处理方法
;
// 将该UIWindow对象设为主窗口并显示出来
[self.window makeKeyAndVisible];

上面的代码中首先创建了一个UIWindow作为应用程序的窗口接下来创建一个UIView作为UIWindow显示的根视图需要借助一个UIViewController对象。

一旦程序中有了UIView作为容器接下来代码归纳起来相当于只有三行此处的三行是一种归纳说法并非实际只有三行。

创建UI控件比如创建UILabel丶创建UIButton等。

调用addSubView:方法将UI控件添加到其他容器中。

多次调用UI控件的setter方法来设置UI控件的外观丶行为。

上面代码中为按钮的触碰事件绑定了clickHandler:事件处理方法因此程序还需要在应用程序委托类中定义该方法。方法代码如下

程序清单codes/09/9.5/CodeUI/ CodeUI/FKAppDelegate.m

- (void) clickHandler:(id)sender
self.show.text = @"开始学习iOS吧";

上面的代码只是简单地修改show控件的文本内容这样即可实现当用户触碰按钮时动态改变show控件的文本内容。

运行该程序单击程序中的按钮即可看到如图9.36所示的效果。

通过上面的开发过程可以发现不管是通过纯代码来创建UI控件再将这些UI控件搭建成程序界面还是使用界面设计文件来搭建程序界面其本质是相同的。它们的本质都是把UI控件当成小的积木块然后将这些"积木块"按自己的意愿组合在一起就可以做成iOS应用的程序界面了。

需要指出的是使用纯代码方式来开发iOS应用并不是最好的开发方式这种方式不仅开发步骤异常烦琐而且所有创建程序界面的代码都由应用程序委托对象的方法负责完成这并不符合MVC设计原则因此不利于程序组件的解耦。通过学习这种开发方式我们可以更好地理解iOS应用中应用程序委托的作用同时也能更好地理解iOS程序界面的底层实现原理。

阅读更多内容

没有评论:

发表评论