手把手教你使用Size Class

在 iOS8 中,我们不用再像以前那样,一个页面新建多个 xib 文件来适配不同类型的屏幕,现在我们可以把各种尺寸屏幕的适配工作放在一个文件中完成,然后可以通过不同类别的 Size 来定制各种尺寸的界面。换句话说,你眼前的 Storyboard 不是一个普通的 Storyboard ,而是一个九合一的 Storyboard ,可以管理九种类型的屏幕。

对于宽度和高度而言,都有三种情况:紧凑 (Compact) 、任意 (Any) 、 正常 (Regular) ,所以一共有3*3=9个类别。

在设置 Size Class 的时候页面会有提示。默认情况下宽和高都为Any,如下图。

我们可以从上图Size Class设置界面看到,上方文字Any Width Any Height就是表示宽和高都为任意;下方文字For all layouts 意思显然就是适用于所有尺寸。

Size Class 的作用是将不同尺寸的屏幕进行分类处理,而最后进行布局管理的还是Autolayout。

现在我们做一个小实验,首先向视图中加入一个居中的button按钮,如下图所示

这时候 我们再进入Size Class的设置界面,将Size设置为如下图所示

从Size Class设置界面的上方文字可以看到,此时,宽度是正常的,高度是紧凑的;从下方文字可以看到For 5.5inch iPhones in landscape。意思即为适用于5.5寸iPhone横屏,那不就是iPhone6+横屏嘛。(至于其他的Size,我就不再演示,只演示这一个,我想大家都可以举一反三的)。我们这时候再向屏幕中假如一个按钮button,如下图

这时运行程序就可以看到效果,我们第一次添加的按钮,无论是用iPhone4,5还是6等都会出现,但是第二次添加的按钮,只有在iphone6+的横屏的情况下才会出现。我想大家应该明白为什么第二个按钮只会在iPhone6+上面显示了吧。这我就不再解释了。

演示结果(iphone6+竖屏和横屏)

有网友问我如果一个控件在不同的设备尺寸上有不同布局,那应该怎么做。。接下来就解释一下。前面说话过Size Class的作用仅仅是讲不同尺寸的屏幕进行分类处理,而最后进行布局管理的始终都是AutoLayout。所以如果想让一个控件在不同尺寸有不同的布局,肯定是需要修改AutoLayout。

 我们还回到默认的Size界面,下图的AutoLayout是我之前已经添加上的。我现在的需求是让想让页面中的那个Button按钮在iPhone6+横屏中 距离他的父视图的顶部是0,而不是现在的121.参照下图

 接下来我们讲Size改为只适用于iphone6+横屏的尺寸。然后点击我们要修改的那个约束,可以看到约束的左边有一个加号
点击加号, 选择iPhone6+横屏时的Size ,然后修改它的值,把它的值改为0。如下图
修改完之后运行(效果如下)
按照这个方法,你就可以修改控件在不同尺寸下的布局了。
 
 
 
 

转载于:https://www.cnblogs.com/wuqh-iOS/p/4704496.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然没问题!下面我将为您提供一份简单的程,手把手您如何使用PyTorch。 首先,确保您已经安装了PyTorch。您可以从官方网站(https://pytorch.org)根据您的操作系统和需求下载并安装PyTorch。 接下来,让我们从一个简单的示例开始。假设我们要训练一个简单的线性回归模型来预测房价。我们将使用均方差损失作为我们的损失函数,并使用随机梯度下降作为优化器。 首先,导入所需的库: ```python import torch import torch.nn as nn import torch.optim as optim ``` 然后,定义我们的模型。在这个例子中,我们将使用一个简单的线性层作为我们的模型。 ```python class LinearRegression(nn.Module): def __init__(self, input_size, output_size): super(LinearRegression, self).__init__() self.linear = nn.Linear(input_size, output_size) def forward(self, x): return self.linear(x) ``` 接下来,定义一些训练数据和标签。在这个例子中,我们将使用一个简单的2维张量。 ```python # 训练数据 x_train = torch.tensor([[1], [2], [3], [4]], dtype=torch.float32) # 标签 y_train = torch.tensor([[2], [4], [6], [8]], dtype=torch.float32) ``` 现在,我们可以实例化我们的模型并定义损失函数和优化器。 ```python # 实例化模型 model = LinearRegression(input_size=1, output_size=1) # 定义损失函数和优化器 criterion = nn.MSELoss() optimizer = optim.SGD(model.parameters(), lr=0.01) ``` 接下来,我们可以开始训练我们的模型了。训练过程通常包括多个迭代,每个迭代中都会进行前向传播、计算损失、反向传播和更新参数的步骤。 ```python # 设置训练迭代次数 num_epochs = 100 # 开始训练 for epoch in range(num_epochs): # 前向传播 outputs = model(x_train) # 计算损失 loss = criterion(outputs, y_train) # 反向传播和优化 optimizer.zero_grad() loss.backward() optimizer.step() # 打印训练进程 if (epoch+1) % 10 == 0: print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item())) ``` 最后,我们可以使用训练好的模型来进行预测。 ```python # 预测 x_test = torch.tensor([[5]], dtype=torch.float32) predicted = model(x_test) print('预测值: {:.2f}'.format(predicted.item())) ``` 这就是一个简单的使用PyTorch进行线性回归的示例。您可以根据您的需求扩展和修改这个示例,以适应不同的问题和模型。 希望这个程对您有所帮助!如果您有任何问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值