内容对齐 TextAlignment & VerticalAlignment & HorizontalAlignment & contentMode

本文详细解读了iOS开发中容易混淆的五个属性:textAligment、contentVerticalAlignment、contentHorizontalAlignment、contentMode和他们各自的用法。通过具体实例,帮助开发者更好地理解和应用这些属性。

四个容易混淆的属性:

1.textAligment: 文字的水平方向的对齐方式

   1> 取值

   NSTextAlignmentLeft      = 0,    // 左对齐
   NSTextAlignmentCenter    = 1,    // 居中对齐
   NSTextAlignmentRight    = 2,    // 右对齐

   2> 哪些控件有这个属性 : 一般能够显示文字的控件都有这个属性

   * UITextField
   * UILabel
   * UITextView

2.contentVerticalAlignment: 内容的垂直方向的对齐方式

   1> 取值

   UIControlContentVerticalAlignmentCenter  = 0, // 居中对齐
   UIControlContentVerticalAlignmentTop     = 1, // 顶部对齐
   UIControlContentVerticalAlignmentBottom  = 2, // 底部对齐

   2> 哪些控件有这个属性 : 继承自UIControl的控件或者UIControl本身

   * UIControl
   * UIButton
   * UITextField
   * ...

3.contentHorizontalAlignment : 内容的水平方向的对齐方式

   1> 取值

   UIControlContentHorizontalAlignmentCenter = 0, // 居中对齐
   UIControlContentHorizontalAlignmentLeft   = 1, // 左对齐
   UIControlContentHorizontalAlignmentRight  = 2, // 右对齐

   2> 哪些控件有这个属性 : 继承自UIControl的控件或者UIControl本身

   * UIControl
   * UIButton
   * UITextField
   * ...

4.contentMode : 内容模式(控制内容的对齐方式), 一般对UIImageView很有用

   1> 取值

   /*
   规律:
   1.Scale : 图片会拉伸
   2.Aspect : 图片会保持原来的宽高比
   */
   // 前3个情况, 图片都会拉伸
   // (默认)拉伸图片至填充整个UIImageView(图片的显示尺寸会跟UIImageView的尺寸一样)
   UIViewContentModeScaleToFill,
   // 按照图片原来的宽高比进行伸缩, 伸缩至适应整个UIImageView(图片的内容不能超出UIImageView的尺寸范围)
   UIViewContentModeScaleAspectFit,
   // 按照图片原来的宽高比进行伸缩, 伸缩至 图片的 宽度 和UIImageView的宽度一样 或者 图片的高度和UIImageView的高度一样
   UIViewContentModeScaleAspectFill,

   // 后面的所有情况, 都会按照图片的原来尺寸显示, 不会进行拉伸
   UIViewContentModeRedraw,  // 当控件的尺寸改变了, 就会重绘一次(重新调用setNeedsDisplay, 调用drawRect:)
   UIViewContentModeCenter,
   UIViewContentModeTop,
   UIViewContentModeBottom,
   UIViewContentModeLeft,
   UIViewContentModeRight,
   UIViewContentModeTopLeft,
   UIViewContentModeTopRight,
   UIViewContentModeBottomLeft,
   UIViewContentModeBottomRight,

   2> 哪些控件有这个属性 : 

   所有UI控件都有


5. 如果有多个属性的作用冲突了, 只有1个属性有效(就近原则)



在WPF中,我运用了Wpf.Ui.Controls下的 NavigationViewItem来实现导航界面来跳转Page的功能,但是跳转的时候发现有些许卡顿,后面发现但凡是数据较多,假设DataGrid超过了10条,跳转的时候都会有些许卡顿,按理来说,数据已经在内存里面加载好了,应该没什么问题啊??????为什么数据量大一点点就会卡顿呢????是控件的设计缺陷吗????我的界面代码如下 <ui:NavigationView x:Name="NavigationView" Grid.Row="1" Margin="0" FooterMenuItemsSource="{Binding ViewModel.FooterMenuItems, Mode=OneWay}" IsBackButtonVisible="Collapsed" IsPaneToggleVisible="False" MenuItemsSource="{Binding ViewModel.MenuItems, Mode=OneWay}" PaneDisplayMode="LeftFluent"> <ui:NavigationView.ContentOverlay> <Grid> <ui:SnackbarPresenter x:Name="SnackbarPresenter" /> </Grid> </ui:NavigationView.ContentOverlay> </ui:NavigationView> ViewModel的代码如下 public void InitializeViewModel() { UserInfo = UserService.LoginUser; string aboutTitle = "关于"; string patientListTitle = "病人列表"; string dataStatisticsTitle = "数据统计"; string caseCollectionTitle = "病例收藏"; string userDepartmentTitle = "用户科室"; string systemSettingsTitle = "系统设置"; FooterMenuItems.Clear(); FooterMenuItems.Add(new NavigationViewItem(aboutTitle, typeof(AboutPage)) { Icon = SetImageIcon(aboutTitle), Content = new TextBlock() { FontSize = 12, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, Text = aboutTitle } }); MenuItems.Clear(); MenuItems.Add(new NavigationViewItem(patientListTitle, typeof(PatientListPage)) { Icon = SetImageIcon(patientListTitle), Content = new TextBlock() { FontSize = 12, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, Text = patientListTitle } });if (UserInfo.PermissionValue != null && UserInfo.PermissionValue.CanDataStatistics) { MenuItems.Add(new NavigationViewItem(dataStatisticsTitle, typeof(StatisticsPage)) { Icon = SetImageIcon(dataStatisticsTitle), Content = new TextBlock() { FontSize = 12, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, Text = dataStatisticsTitle }, }); } if (UserInfo.PermissionValue != null && UserInfo.PermissionValue.CanCollectCase) { MenuItems.Add(new NavigationViewItem(caseCollectionTitle, typeof(CaseCollectionPage)) { Icon = SetImageIcon(caseCollectionTitle), Content = new TextBlock() { FontSize = 12, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, Text = caseCollectionTitle } }); } if (UserInfo.PermissionValue != null && UserInfo.PermissionValue.CanUserDeptManager) { MenuItems.Add(new NavigationViewItem(userDepartmentTitle, typeof(UserAndDepartmentPage)) { Icon = SetImageIcon(userDepartmentTitle), Content = new TextBlock() { FontSize = 12, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, Text = userDepartmentTitle } }); } if (UserInfo.PermissionValue != null && UserInfo.PermissionValue.CanSetSystem) { MenuItems.Add(new NavigationViewItem(systemSettingsTitle, typeof(SystemSettingsPage)) { Icon = SetImageIcon(systemSettingsTitle), Content = new TextBlock() { FontSize = 12, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, Text = systemSettingsTitle } }); } }
最新发布
08-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值