让系统自动控制控件在控制器视图的位置

IPhone、IPad经常会遇到横竖屏切换,或者需要自动调整大小。如果你的界面不能用storyboard和xib来生成界面的话,先把控制器视图的frame属性值固定下来,然后添加subview(子视图)的时候,就可以使用视图继承类(UIView) 自带的 autoresizingMask 属性,之后如果横竖屏切换,或者是使用UIPopoverController之类的方法,就可以只设置一次frame属性,以后的frame属性都是自适应的(frame缩小太多的话效果不好,根据情况而定)。

原理:设置autoresizingMask后,当页面的大小发生改变,那么系统会给已经显示的,所有有关的子视图进行自动调整。属性中的所有控件根据 autoresizingMask 来自动设置属性 frame,你能在对应的 -(void)setFrame:(CGRect)rect{} 实现系统的回调,在调用 setFrame 方法的过程中,系统会自动加载默认的动画方法。

UIViewAutoresizing 的属性定义如下:

{

UIViewAutoresizingNone  
     
     
  = 0,

UIViewAutoresizingFlexibleLeftMargin
  = 1 << 0,

UIViewAutoresizingFlexibleWidth 
     
= 1 << 1,

UIViewAutoresizingFlexibleRightMargin 
= 1 << 2,

UIViewAutoresizingFlexibleTopMargin 
  = 1 << 3,

UIViewAutoresizingFlexibleHeight
     
= 1 << 4,

UIViewAutoresizingFlexibleBottomMargin
= 1 << 5

};

typedef NSUInteger UIViewAutoresizing;

UIViewAutoresizingFlexibleLeftMargin 视图靠右对齐

UIViewAutoresizingFlexibleWidth 视图自适应宽度

UIViewAutoresizingFlexibleRightMargin 视图靠左对齐

UIViewAutoresizingFlexibleTopMargin 视图靠下对齐

UIViewAutoresizingFlexibleHeight 视图自适应高度

UIViewAutoresizingFlexibleBottomMargin 视图靠上对齐

注意:LeftMargin、RightMargin、TopMargin、BottomMargin的实际对齐方向是相反的

示例:让按钮始终在 ViewController
的右上角显示:

- (void)viewDidLoad

{    

    [super viewDidLoad];

    UIButton *right = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    right.frame = CGRectMake(self.view.frame.size.width-300, 0, 300, 300);

    right.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

    [right setTitle:@"456" forState:UIControlStateNormal];

    [self.view addSubview:right];

}

让系统自动控制控件在控制器视图的位置,布布扣,bubuko.com

时间: 2024-10-11 10:46:48

让系统自动控制控件在控制器视图的位置的相关文章

iOS8统一的系统提示控件——UIAlertController

iOS8统一的系统提示控件——UIAlertController 一.引言 相信在iOS开发中,大家对UIAlertView和UIActionSheet一定不陌生,这两个控件在UI设计中发挥了很大的作用.然而如果你用过,你会发现这两个控件的设计思路有些繁琐,通过创建设置代理来进行界面的交互,将代码逻辑分割了,并且很容易形成冗余代码.在iOS8之后,系统吸引了UIAlertController这个类,整理了UIAlertView和UIActionSheet这两个控件,在iOS中,如果你扔使用UIA

控件移除子视图和从父视图上移出

控件从父视图上移出 一句代码 [self .perTableView removeFromSuperview]; 其实如果移除控件所有子视图 也只需要一句代码即可 [sectionView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

WPF 程序鼠标在窗口之外的时候,控件拿到的鼠标位置在哪里?

原文:WPF 程序鼠标在窗口之外的时候,控件拿到的鼠标位置在哪里? 在 WPF 程序中,我们有 Mouse.GetPosition(IInputElement relativeTo) 方法可以拿到鼠标当前相对于某个 WPF 控件的位置,也可以通过在 MouseMove 事件中通过 e.GetPosition(IInputElement relativeTo) 方法拿到同样的信息.不过,在任意时刻去获取鼠标位置的时候,如果鼠标在窗口之外,将获取到什么点呢? 本文将介绍鼠标在窗口之外时获取到的鼠标位

UI基本控件和自定义视图

UILabel 常用属性: UITextField 常用属性: 输入控制属性: 外观控制属性: 输入框让键盘回收的方法: 1.通过协议 (1)让AppDelegate成为输入框的代理对象 ,让TA去执行事件(AppDelegate接受输入框的协议) (2)接受了协议就要执行键盘回收的方法 (3)建立关系: 如:textField.delegate = self;(self指AppDelegate) 2.通过Tag值 (1)创建一个按钮添加触发事件,让Tag值的键盘回收 (2)按钮触发的事件方法如

Android控件篇之视图控件scrollview探索

ScrollView继承关系 Scrollview的源码位置android.widget.ScrollView,该视图类主要继承与FrameLayout public class ScrollView extends FrameLayout java.lang.Object android.view.View android.view.ViewGroup android.widget.FrameLayout android.widget.ScrollView 类概述 一种可供用户滚动的层次结构布

[Android]最简单的镜像系统View控件

原因: 安卓自带的控件没有镜像功能,没关系我们可以自己实现一个.其实很简单,重写系统控件的draw方法,不是ondraw方法.具体可以看源码 解决方案: 这是我写的Seekbar的镜像,公司需求 package com.finals.oilrank.util.view; import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.w

c#运用TreeView控件的树形视图显示数据库中数据

TreeView控件显示数据库,Nodes集合的Add方法. Treeview控件的Nodes集合包含多个子节点,节点也可以包含另外的节点.通过节点的backcolor属性设置背景色. 具体代码测试: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System

c# winform控件dock属性停造位置、摆放顺序详解

dock : [英文释义- 码头.依靠][winform释义- 获取或设置当前控件依靠到父容器的哪一个边缘.] 用途:多数控件都有这个属性,主要用来设置控件的布局. 但对于不太了解这个属性的朋友来说有时候会遇到比较头疼的问题: 简单的布局就是摆放不好,达不到预定的效果.出现这种问题往往是忽略了Dock的一个特性“控件依照 Z 顺序停靠. 什么是Z 顺序呢?MSDN里有这么一段描述: Z 顺序是窗体上的控件沿窗体的 Z-轴(深度)方向的可视化分层. 也就是说控件是“一层一层摞放在窗体上的”,离窗体

Delphi XE7 FMX Android输入控件自适应虚拟键盘的位置

XE7带的Demo,演示了如何适应虚拟键盘,即当虚拟键盘弹出时,如果掩盖了当前的输入项,如Edit1,那么重新计算屏上所有控件的位置,让Edit1能够正常显示在键盘上面,让用户能看到输入的内容.问题是,键盘弹出后,如果用户利用键盘上的隐藏键,隐藏了键盘后,不能恢复屏上控件的位置,这个问题,其实XE5就存在.要感谢盒子上Flying Wang,用他的方法,很好的解决了上面的问题:原文在这里,改后的FMX.VirtualKeyboard.Android.pas代码在这里.