Swift开发IOS的细节

本文介绍了iOS开发中如何设置UILabel自适应宽度、调整UIButton背景图颜色、使用UIImage的拉伸模式以及实现UIImageView动画的基本方法。同时,还详细解释了UITextField的配置选项和UINavigationController导航栏的自定义方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.设置UILabel自适应宽度

var lable = UILabel()
// 设置自适应宽度
lable.adjustsFontSizeToFitWidth = true
// 设置在自适应宽度的情况下,最小能接受的缩放比
lable.minimumScaleFactor = 0.8

2.设置UIButton的背景图UIImage保留本身颜色属性

var img = UIImage(named: "test.png")
img = img!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
        
var btn = UIButton()
btn.setImage(img!, forState: UIControlState.Normal)

3.UIImage的拉伸模式

3-1 stretchableImageWithLeftCapWidth

stretch拉伸的效果:



var img = UIImage(named: "chat_bubble_thumbnail_0")
var imageView = UIImageView(image: img)
imageView.frame = CGRectMake(40, 60, 70, 70)
self.view.addSubview(imageView)  // 原图
        
img = img!.stretchableImageWithLeftCapWidth(40, topCapHeight: 40)
var imageView_s = UIImageView(image: img!)
imageView_s.frame = CGRectMake(40, 130, 200, 100)
self.view.addSubview(imageView_s) // 拉伸之后的图


上面的原图的大小为70*70像素,通过stretchableImageWithLeftCapWidth(40, topCapHeight: 40)指定了如原图上面的横竖两条线,拉伸的时候,只拉伸着两条线,并以相同的颜色填充,这类似于Android中的点9图。

3-2 resizableImageWithCapInsets

效果图:


var img = UIImage(named: "nvx")  //原图
var imageView = UIImageView(image: img)
imageView.frame = CGRectMake(10, 70, 46, 46)
self.view.addSubview(imageView)
        
var img_s = img!.resizableImageWithCapInsets(UIEdgeInsetsMake(0, 23, 0, 0), resizingMode: UIImageResizingMode.Stretch)
var imageView_s = UIImageView(image: img_s)
imageView_s.frame = CGRectMake(10, 120, 138, 138)
self.view.addSubview(imageView_s)  // 拉伸_左
        
var img_t = img!.resizableImageWithCapInsets(UIEdgeInsetsMake(0, 23, 0, 0), resizingMode: UIImageResizingMode.Tile)
var imageView_t = UIImageView(image: img_t)
imageView_t.frame = CGRectMake(155, 120, 138, 138)
self.view.addSubview(imageView_t)  // 拉伸_左

4. UIImageView动画实现

let imageView = UIImageView()
var images = [UIImage]()
for i in 1...10 // 循环添加10张图片
{
    let img = UIImage(named: "text_\(i)")
    images.append(img!)
}
imageView.animationImages = images
imageView.animationDuration = 2.0 //完成一次循环需要的时间
imageView.startAnimating() //开始播放动画
除此之外:
imageView.isAnimating()  //判断是否正在播放动画
imageView.stopAnimating()  // 关闭动画
// UIImageView可以进行交互
imageView.userInteractionEnabled = true

5. 关于UITextField

var textField = UITextField()
// 设置提示文字
textField.placeholder = "请输入账号"
// 设置为密码输入格式
textField.secureTextEntry = true
// 成为第一响应者
textField.becomeFirstResponder()
// 失去第一响应者,用于隐藏键盘
textField.resignFirstResponder()
// 将视图中所有的输入框全失去第一响应者
self.view.endEditing(true)
// 设置清除按键的显示:Always,Never,WhileEditing,UnlessEditing
textField.clearButtonMode = UITextFieldViewMode.Always
// 设置键盘风格
textField.keyboardType = UIKeyboardType.PhonePad
// return键的现实风格
textField.returnKeyType = UIReturnKeyType.Search

6. UINavigationController导航栏控制器

    导航栏的高度为44像素,在ios7之后,状态栏和导航栏合二为一,总高度为64像素。

// 设置导航栏的颜色
self.navigationController?.navigationBar.barTintColor = UIColor.blueColor()
// 设置导航栏不透明
self.navigationController?.navigationBar.translucent = false

7.navigationItem

设置navigationItem的prompt提示区域信息:


self.navigationItem.title = "主页"
self.navigationItem.prompt = "提示区域"
navigationItem.title为普通标题;若设置prompt,导航栏的总高度变为94像素,不再是64像素(状态栏+导航栏=64像素)

为navigationItem设置视图


let searchBar = UISearchBar(frame: CGRectMake(0, 0, 200, 40))
searchBar.placeholder = "输入查找的内容"
searchBar.barStyle = UIBarStyle.BlackTranslucent
self.navigationItem.titleView = searchBar


self.navigationController!.navigationBar.barTintColor = UIColor.redColor()
let seg = UISegmentedControl(items: ["消息", "电话"])
seg.frame = CGRectMake(30, 0, 190, 30)
seg.tintColor = UIColor.whiteColor()
seg.selectedSegmentIndex = 0;
self.navigationItem.titleView = seg

给navigationItem设置一组Button:

let barBtn_l_1 = UIBarButtonItem(....)
let barBtn_l_2 = UIBarButtonItem(....)
self.navigationItem.leftBarButtonItems = [barBtn_l_1, barBtn_l_2]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值