目前分類:ios 使用筆記 (9)

瀏覽方式: 標題列表 簡短摘要
原文地址:http://blog.csdn.net/jimoduwu/article/details/8917104

去App Store搜索并下载“LightBlue”这个App,对调试你的app和理解Core Bluetooth会很有帮助。

================================

Demo下载地址:http://download.csdn.net/detail/jimoduwu/7146875

================================

Core Bluetooth for iOS 6

CoreBluetoothAPI是基于BLE4.0的标准的。这个框架涵盖了BLE标准的所有细节。仅仅只有新的iOS设备和Mac是和BLE标准兼容的:iPhone4SiPhone5MacMiniNew iPad,MacBook Air,MacBook Pro。还有iPhone iOS6的模拟器也支持。这是非常有用的,在你没有一个真正的iOS设备而用模拟器去调试你的程序。

相关的类

CoreBluetooth框架中,有两个主要的角色:周边和中央(Peripheral and Central ,整个框架都是围绕这两个主要角色设计的,他俩之间有一系列的回调交换数据。下图1展示了周边和中央(Peripheral and Central),还有他俩之间的关系。


戮克 發表在 痞客邦 留言(0) 人氣()

下来讨论的是在AutoLayout布局下,View的Transform被改变时,会触发layout从而引起布局混乱的问题。这些适配问题在IOS8中可能已经不存在,或者至少被弱化了。

 

问题:

 

AutoLayout中的transform确实存在一些兼容性问题,从而导致动画异常。至于其原因,我的理解是,一旦使用了AutoLayout,那么它的frame就应该交给AutoLayout来处理,就不应该再通过变换transform来修改它的frame。

 

AutoLayout的原理是在layoutSubviews中应用Constraints来设置View的frame。换句话说,Constraints只是一个在layoutSubviews时执行的任务队列。

 

当我修改下面这个View的transform上时,理论上的结果应该是View被居中缩小,但当View有不同的Constraints时,我们可能会看到不同的效果:

 

戮克 發表在 痞客邦 留言(0) 人氣()

续前一篇,继续来说一说AutoLayout。我只是一个小菜鸟有什么不对大的大家请多多指教。自己最不擅长的就是写东西了。如果有什么读起来很不明白的。请多多原谅啊。

随着iphone 5的推出,在开发应用程序的时候我们不得不开始很认真的考虑关于屏幕大小的问题了,在iphone 5之前,我们在开发iphone应用程序的时候我们只需要考虑Retina屏幕就可以了,这个很简单基本是要准备一个xxx@2x.png图片就可以了。应用程序在运行的时候会自动判断屏幕的大小来选择不同的图片来显示。然而iphone 5出来之后发现屏幕变高了。现在屏幕的高度变为568px了。所以不得不从新考虑一下如何才能应对屏幕大小的问题了。

目前可以解决的方法,似乎有俩种方法。

  • Autoresizing Mask
1 enum {
2  
3 UIViewAutoresizingNone                 = 0,
4  
5 UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
6  
7 UIViewAutoresizingFlexibleWidth        = 1 << 1,

戮克 發表在 痞客邦 留言(0) 人氣()

iOS6中,如果像旧版本的资料提到的那样,用IB将一个ScrollView拖到.h文件中创建一个outlet,并在viewDidLoad函数中设置ScrollView的contentSize属性的话,会发现运行的程序中ScrollView可见,但无法拖动。这是因为iOS6中的AutoLayout机制,在viewDidLoad函数被执行后,AutoLayout会重新把contentSize修改为符合屏幕大小的数值(也就是说,现在的contentSize又适合了屏幕大小,并没有大于UIScrollView本身的大小,当然也就不能滚动了)。

解决办法是重写viewDidAppear:(BOOL)animated方法,在父类方法调用之后再修改contentSize属性:

- (void)viewDidAppear:(BOOL)animated { [superviewDidAppear:animated]; self.theScroller.contentSize=CGSizeMake(400.0,600.0); }

这个函数会在autoLayout之后被执行,从而避免了contentSize属性被再次修改。

 

转自:http://blog.csdn.net/hrcnpc/article/details/8157152


戮克 發表在 痞客邦 留言(0) 人氣()

转载:http://www.cocoachina.com/ios/20141118/10242.html
学 Autolayout,当涉及到 ScrollView 时,很多人面对满屏幕红色错误不知所措,为什么明明以前没问题的约束到了这儿就成了错误。

比如下面这种情况:

点击查看原始图片

一个蓝色的 UIView,设其长宽约束分别为 210,200。上、左和右间距为 55。如此设置这个 View 的位置就被确定了。没有错误,没有警告。

可同样的方法,到 UIScrollView 却有触目惊心的红色错误:

点击查看原始图片

可以看到 Storyboard 错误提示:ScrollView has ambiguous scrollable content height。这是怎么一回事呢?

我们知道,UIScrollView 有一个 contentSize 属性,其定义了 ScrollView 可滚动内容的大小。在以前用纯代码写的时候,我们会直接对这个属性赋值,定义其大小。但在 Autolayout 下,UIScrollView 的 contentSize 是由其内容的约束来定义的。因此,我们在 ScrollView 里面设置的约束,不仅起到布局内容的作用,同时也起到了定义 ScrollView 可滚动范围的作用。

针对上面的例子具体来说,ScrollView 知道它里面有个 View,其高度是 200,距离顶上为 55,但仅通过这两个约束没办法知道它的 contentSize 的高度是多少,我们缺少一个定义 View 到 ScrollView 底部距离的约束。

戮克 發表在 痞客邦 留言(0) 人氣()

package maximyudin.BatteryLevel;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.TextView;

public class BatteryLevel extends Activity {
        private TextView tvBatteryLevel;

戮克 發表在 痞客邦 留言(0) 人氣()

各位看官请注意了,是点到线段的距离。点到线段,不是点到直线或者点到射线,如果不明白啥就点到直线的记录,请参考初中几何教材。
(x1,y1),(x2,y2)是线段的两个端点,(x3,y3)是那个点。
- (double)CalDis:(double)x1:(double)y1:(double)x2:(double)y2:(double)x3:(double)y3
{
double px = x2 - x1;
double py = y2 - y1;
double som = px * px + py * py;
double u = ((x3 - x1) * px + (y3 - y1) * py) / som;
if (u > 1) {

戮克 發表在 痞客邦 留言(0) 人氣()

公司測試用的Iphone 6,平常可帶回家測試和使用。

Iphone 6介面畫質真得很好很漂亮



戮克 發表在 痞客邦 留言(0) 人氣()





戮克 發表在 痞客邦 留言(0) 人氣()