标签: uilabel

在 iOS 中使用 swift 制作自定义 UILabel 有框架问题

我想使用 swift 创建自己的自定义 UILabel,但在使用 init 超类时遇到了框架问题。

这是我之前的情况:

 let label = UILabel()
Run Code Online (Sandbox Code Playgroud)

我以前基本上使用普通的 UILabel。首先我的问题是,这个框架是如何设定的?因为当我进入 UILabel 类时,它继承自 UIView 并且 UIView 内的 init 方法需要一个框架。那么这个框架是如何创建的呢?

然后,这将我带到我自己的自定义 UILabel,我将其称为 TimeLabel。这是它的实现:

class TimeLabel: UILabel {

    var clientName: String?
    var time: Time?

    init(name:String, time:Time) {
        self.clientName = name
        self.time = time
        super.init(frame: ??)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(frame:??)
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这链接到第一个问题,我应该从哪里获取这个框架?我之前调用 UILabel 时没有提供框架?我该如何处理这个问题?

uilabel ios swift

0
推荐指数
1
解决办法
4669
查看次数

使用 UILabel 以编程方式自动布局不起作用

所以我想以编程方式将 UILabel 在视图中水平和垂直居中。我关注了这个主题,但它不起作用。我怎样才能做到这一点?

p/s:这是我的代码:

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let noDataLabel = UILabel()
        noDataLabel.text = "No data :("
        noDataLabel.textColor = UIColor.redColor()
        noDataLabel.font = UIFont.systemFontOfSize(20)
        noDataLabel.sizeToFit()
        self.view.addSubview(noDataLabel)
        NSLayoutConstraint(item: noDataLabel, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1.0, constant: 0.0).active = true
        NSLayoutConstraint(item: noDataLabel, attribute: .CenterY, relatedBy: .Equal, toItem: self.view, attribute: .CenterY, multiplier: 1.0, constant: 0.0).active = true
    }
}
Run Code Online (Sandbox Code Playgroud)

uilabel ios autolayout swift

0
推荐指数
1
解决办法
1972
查看次数

如何像进度条一样为 UILabel 的文本颜色设置动画

我正在尝试从左到右逐步更改 UILabel 的文本颜色。我发现我可以使用 UIView 的动画:

[UIView transitionWithView:_label duration:1 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
    _label.textColor = [UIColor redColor];
} completion:nil];
Run Code Online (Sandbox Code Playgroud)

但问题是我的情况没有选择:从左到右逐渐进行。

然后我找到了一种通过调用以下命令来逐个字母地更改文本颜色的方法:

[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(yourSelector) userInfo:nil repeats:NO];

- (void)yourSelector
{
    [_string setAttributes:@{NSForegroundColorAttributeName: [UIColor redColor]} range:NSMakeRange(_index, 1)];
    [_label setAttributedText:_string];
    _index++;
}
Run Code Online (Sandbox Code Playgroud)

但这里的问题是,我希望动画更像是一个字母一个字母,但每个字母也有动画,就像有两个不同颜色的标签放置在同一位置(黑色覆盖红色),然后从左到右对蒙版进行动画处理向右隐藏黑色标签,以便红色标签逐渐显示。

那么有没有办法实现这一点呢?

animation text objective-c uilabel ios

0
推荐指数
1
解决办法
728
查看次数

如何大写 Swift 子类中 UILabel 的文本属性

UILabel在我的应用程序中创建了一个 Swift 子类来管理它在所有视图中的样式,以便以后更容易修改样式。我知道要将字符串转换为大写,我可以使用其中任何一个uppercased()来实现。

但是,问题在于当我在text 属性的子类中使用uppercased()或时,它在运行时不起作用。奇怪的是它在情节提要上正确呈现(使用),但在运行时,它显示了未大写的字符串。capitalizedUILabel@IBDesignable

例如,我在UILabel子类中有一段与此类似的代码:

textColor = ...
font = UIFont(name: "Avenir-Medium", size: 12.0)
text = text!.uppercased()
Run Code Online (Sandbox Code Playgroud)

然后在视图控制器中,我有一个类似于这样的代码:

label_noWeightMessage.text = "No weight logs this week..."
Run Code Online (Sandbox Code Playgroud)

除了大小写更改外,颜色和字体应用正确。我在这里错过了什么吗?

在故事板中,文本显示为“NO WEIGHT LOGS THIS WEEK...”但在运行时的模拟器中,它恢复到原始情况。

我知道我可以只用大写字母输入文本。但这不是我想要的。我希望能够在所有屏幕上重复使用样式,而无需重新键入所有UILabel文本,只需在一处更改即可。

谢谢!

uilabel ios swift

0
推荐指数
1
解决办法
2212
查看次数

UILabel 文本对齐不起作用(Swift 4)

我正在尝试对齐 UILabel 中的文本,但它不起作用。文本打印时标签的第二行紧贴标签的左侧。如何使两条线在标签中心对齐?谢谢。

let bioTextView: UILabel = {
    let tv = UILabel()
    tv.text = "This is sample text for a bio label for a user on this platform."
    tv.backgroundColor = .clear
    tv.textColor = .white
    tv.lineBreakMode = .byWordWrapping
    tv.numberOfLines = 0
    tv.textAlignment = NSTextAlignment.right
    return tv
}()
Run Code Online (Sandbox Code Playgroud)

请找到以下问题的屏幕截图。我的要求是将文本放在拖线中。

在此处输入图片说明

anchor xcode uilabel ios swift

0
推荐指数
1
解决办法
4722
查看次数

在 Swift 中制作动画之前,如何将转换应用于 UILabel?

在视图为比例设置动画之前,我希望在没有动画的情况下旋转视图。如果我之后有动画,我现在拥有它的方式会忽略我的初始视图旋转。

label.transform = CGAffineTransform(rotationAngle: CGFloat(90.0 * .pi / 180))

animateLabel(label:label)

func animateLabel(label:UILabel) {

    label.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)

    UIView.animate(withDuration: 0.2, animations: {
        label.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
    },
    completion: { _ in
        UIView.animate(withDuration: 0.1) {
            label.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)

        }
    })

}
Run Code Online (Sandbox Code Playgroud)

更新:我如何用马特的回答更新我的代码,以便它正确动画:

我首先将初始旋转设置为变换变量,然后在调用 animateLabel 时发送它:

var transforms: CGAffineTransform = .identity

transforms = transforms.concatenating(CGAffineTransform(rotationAngle: CGFloat(90.0 * .pi / 180)))

animateLabel(label:label, transforms:transforms)
Run Code Online (Sandbox Code Playgroud)

我连接比例并将变换设置为修改后的变换。然后我可以对实际动画使用缩放比例:

func animateLabel(label:UILabel, transforms:CGAffineTransform) {

    transforms.concatenating(CGAffineTransform(scaleX: 0.6, y: 0.6))

    label.transform = transforms

    UIView.animate(withDuration: 0.2, …
Run Code Online (Sandbox Code Playgroud)

transform rotation uilabel swift

0
推荐指数
1
解决办法
529
查看次数

UILabel swift 5 的“显示更多/显示更少”按钮

我试图在 tableView 单元格中为我的 UILabel 实现“显示更多/显示更少”功能。我试过在网上搜索解决方案,但它们似乎都过时了。

标题文本应该有 2 行,如果超过 2 行,它将扩展为全文

 lazy var captionText: UILabel = {
        let lbl = UILabel()
        lbl.numberOfLines = 2
        lbl.lineBreakMode = .byWordWrapping
        return lbl
    }()

func setupUI(viewModel: FeedModel) {

        captionText.text = viewModel.postDescription
}
Run Code Online (Sandbox Code Playgroud)

我喜欢最终的结果是这样的:

可扩展的 UILabel 示例

扩展的 UILabel 示例

uitableview uitextview uilabel ios swift

0
推荐指数
1
解决办法
160
查看次数

隐藏/显示隐藏属性不起作用的UILabel

我在CustomViewController的方法viewDidLoad中实现了以下代码,根据我的需要打开/关闭标签可见性:

- (void)viewDidLoad
{
 [super viewDidLoad];

 myLabel.hidden=NO;

if (x==1) {

   myLabel.hidden=YES;//here is correctly hidden
}
else {
    [self.view bringSubviewToFront:myLabel];

    if(!myLabel.hidden){

      NSLog(@"I'm not hidden!");// the log displays correctly! so myLabel is not Hidden but I can't see it!
      [self.view bringSubviewToFront:myLabel];
    }
}
Run Code Online (Sandbox Code Playgroud)

MyLabel在CustomViewController.h("IBOutlet UILabel*myLabel;")中声明,并连接到Xib文件中对应的UILabel接口.

为什么即使它的"隐藏"属性是假的,我也看不到它?

Ps将UILabel文本分配给xib文件中的UILabel接口

谢谢卢卡

解决了感谢伙计们我觉得很愚蠢.标签已经不在舞台上所以我可以看到它.我只是重新定位它现在它工作正常

cocoa-touch objective-c uilabel

-1
推荐指数
1
解决办法
9441
查看次数

iOS,如何创建带标签的文本字段?


我想通过使用IB或代码来创建带标签的文本字段(UITextField,而不是UITextArea),如下图所示。
1.标签必须在文本字段的范围内。
2.标签不得与在文本字段中输入的文本重叠。
3.如果文本字段的标签被点击,则应成为第一响应者。
提前谢谢了。

文字栏位

iphone interface-builder uitextfield uilabel ios

-1
推荐指数
1
解决办法
1722
查看次数

如何更改Custom Cell的UILabel文本?

我有一个带有自定义原型单元格的表格视图,单元格上有3个不同的标签.如何访问这些标签?我需要改变他们的文本.我到处搜索过,在这种情况下找不到能帮助我的东西.我有以下代码:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"basicCell" forIndexPath:indexPath];

    //change cell's 3 labels' text here

    return cell;


}
Run Code Online (Sandbox Code Playgroud)

如何访问上面单元格的3个不同标签?

objective-c uitableview uiview uilabel ios

-1
推荐指数
1
解决办法
514
查看次数