IOS Ui控件 修改位置和尺寸,代码添加控件

所有的UI控件最终都继承自UIView,UI控件的公共属性都定义在UIView中,
 
UIView 的常见属性
 
 
UIView *superview;  获得自己的父控件对象
NSArray *subviews;  获得自己的所有子控件对象
NSInteger tag;  控件的ID(标识),父控件可以通过tag来找到对应的子控件
CGAffineTransform transform;   控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)
CGRect frame;   控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)
CGRect bounds;   控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0)
CGPoint center;   控件中点的位置(以父控件的左上角为坐标原点)
 
常用的Button状态
 
normal(普通状态)
默认情况(Default)
对应的枚举常量:UIControlStateNormal

 

highlighted(高亮状态)
按钮被按下去的时候(手指还未松开)
对应的枚举常量:UIControlStateHighlighted
 
disabled(失效状态,不可用状态)
如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击
对应的枚举常量:UIControlStateDisabled
 
不同状态,可以设置Button不同的属性(颜色,文字,背景图片等)
 
修改控件位置
 
通过修改控件的frame属性就可以修改控件在屏幕上的位置和尺寸
 
通过以下属性可以修改控件的位置
frame.origin
center

 

通过
frame.size
bounds.size
属性可以修改控件的尺寸
 
// 比如点击“向上”按钮,让按钮的y值减小即可
- (IBAction)top:(UIButton *)sender {
    CGRect btnFrame = self.headBtn.frame;
    btnFrame.origin.y -= 10;
    self.headBtn.frame = btnFrame;
}

// 下面代码是错误的,OC语法规定:不允许直接修改对象的结构体属性的成员
self.headBtn.frame.origin.y -= 10;

 

通过

属性可以修改控件的位置、尺寸不需要计算形变之后的结果

 

代码添加控件

// 创建一个自定义的按钮
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
// 默认状态的背景
[btn setBackgroundImage:[UIImage imageNamed:@"btn_01"] forState:UIControlStateNormal];
// 默认状态的文字
[btn setTitle:@"点我啊" forState:UIControlStateNormal];
// 默认状态的文字颜色(有哪些颜色可以直接点UIColor头文件查看)
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

 例如:

 

// 视图加载完成调用的方法,通常视图控制器的初始化工作,在此执行!
// 一定不要忘记调用父类的实现方法
- (void)viewDidLoad // 此方法是继承自父类的方法
{
    [super viewDidLoad];
    

  // 创建按钮控件
    UIButton *btn = [[UIButton alloc] init];
    // 设置控件的位置
   btn.frame = CGRectMake(20, 20, 100, 100);
	// btn.backgroundColor = [UIColor redColor];
    // 设置控件的文字
   [btn setTitle:@"按钮" forState:UIControlStateNormal];
    // 设置控件文字的颜色 
   [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    

    UIImage *image = [UIImage imageNamed:@"btn_01"];
    [btn setBackgroundImage:image forState:UIControlStateNormal];
    [btn setTitle:@"点我" forState:UIControlStateNormal];
  // 设置按钮控件在普通状态下的字体颜色
    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    // 设置按钮空间在高粱状态下的背景图片
    [btn setBackgroundImage:[UIImage imageNamed:@"btn_02"] forState:UIControlStateHighlighted];
    
  // 将设置好的按钮空间添加到当前view中
   [self.view addSubview:btn];
    
    // 按钮的监听方法
    [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
    
  // 将.h中声明的属性headImageView与btn相关联
    self.headImageView = btn;
}

 

  

 修改大小。角度

 

    // MakeTranslation是基于对象初始位置做的形变
//    self.delta -= 20;
//    NSLog(@"%d", self.delta);
//    self.headImageView.transform = CGAffineTransformMakeTranslation(0, self.delta);
    // Translate是基于transform参数做的形变,实际效果就是一个累加的位移效果
      self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, 0, -20);
	  self.headImageView.transform = CGAffineTransformScale(self.headImageView.transform, 2.0, 1.0);

// 在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI
// 正数表示顺时针旋转
// 负数表示逆时针旋转
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, -M_PI_4);

 

  

 

 

转载于:https://www.cnblogs.com/dwt1220/p/3740450.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用SwiftUI自定义iOS分段控件可以通过以下步骤实现: 1. 创建一个新的SwiftUI View,命名为SegmentedControl。 2. 在SegmentedControl中定义一个枚举类型,用于表示分段控件中的选项。 3. 在SegmentedControl中定义一个@Binding属性用于绑定选中的选项。 4. 在SegmentedControl中使用ForEach循环遍历所有的选项,并将它们显示在分段控件中。 5. 在ForEach循环中,使用Button显示每一个选项,并在按钮的action中更新选中的选项。 6. 为分段控件添加样式,例如置选中的选项的背景色和字体颜色等。 下面是一个简单的示例代码: ```swift enum SegmentedOption: String, CaseIterable { case option1 case option2 case option3 } struct SegmentedControl: View { @Binding var selectedOption: SegmentedOption var body: some View { HStack { ForEach(SegmentedOption.allCases, id: \.self) { option in Button(action: { self.selectedOption = option }) { Text(option.rawValue) .foregroundColor(self.selectedOption == option ? .white : .black) .padding(.horizontal, 20) .padding(.vertical, 10) .background(self.selectedOption == option ? Color.blue : Color.gray) .cornerRadius(10) } } } } } ``` 在使用时,只需要将SegmentedControl添加到需要显示的View中,并将选中的选项绑定到某个属性即可。例如: ```swift struct ContentView: View { @State private var selectedOption: SegmentedOption = .option1 var body: some View { VStack { SegmentedControl(selectedOption: $selectedOption) Text("Selected option: \(selectedOption.rawValue)") } } } ``` 这样就可以在界面上显示一个自定义的iOS分段控件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值