web-dev-qa-db-ja.com

iOS-UILabelに広がる影

UILabelで影の広がりを増やしたいのですが、それを行うためのプロパティが見つかりません。問題を説明するために、以下の写真を追加しました。

An example of the desired label shadow, and the current one.

一番上のラベルは、Photoshopで作成できる望ましい効果です。下のラベルは、iOSで見つけたプロパティを示しています。これが私が一番下のラベルに使用したコードです。

let bottomLabel = UILabel(frame: CGRectMake(0, 0, maxWidth, 18))
bottomLabel.backgroundColor = UIColor.clearColor()
bottomLabel.textColor = UIColor.whiteColor()
bottomLabel.font = UIFont.boldSystemFontOfSize(16)
bottomLabel.text = title
bottomLabel.textAlignment = .Center
bottomLabel.numberOfLines = 1
bottomLabel.layer.shadowOffset = CGSize(width: 0, height: 0)
bottomLabel.layer.shadowOpacity = 1
bottomLabel.layer.shadowRadius = 2

2番目のラベルをシャドウとして使用するという提案を見つけましたが、これでは望ましい結果が得られませんでした。そのラベルのコードは次のとおりです。

let bottomLabelShadow = UILabel(frame: CGRectMake(0, 1, maxWidth, 18)) 
bottomLabelShadow.backgroundColor = UIColor.clearColor()
bottomLabelShadow.textColor = UIColor.blackColor()
bottomLabelShadow.font = UIFont.boldSystemFontOfSize(16)
bottomLabelShadow.text = title
bottomLabelShadow.textAlignment = .Center
bottomLabelShadow.numberOfLines = 1
bottomLabelShadow.layer.shadowOffset = CGSize(width: 0, height: 0)
bottomLabelShadow.layer.shadowOpacity = 1
bottomLabelShadow.layer.shadowRadius = 2
12
evenwerk

それは遊び場で私のために働くようです。シャドウの半径を大きくして、希望どおりに表示する必要があります。

これは私が使用した正確な遊び場コードです

let view = UIView(frame: CGRectMake(0,0,100,20))
view.backgroundColor = UIColor.yellowColor()

let bottomLabel = UILabel(frame: CGRectMake(0, 0, 100, 20))
bottomLabel.backgroundColor = UIColor.clearColor()
bottomLabel.textColor = UIColor.whiteColor()
bottomLabel.font = UIFont.boldSystemFontOfSize(18)
bottomLabel.text = "Testing"
bottomLabel.textAlignment = .Center
bottomLabel.numberOfLines = 1
bottomLabel.layer.shadowOffset = CGSize(width: 0, height: 0)
bottomLabel.layer.shadowOpacity = 1
bottomLabel.layer.shadowRadius = 6

view.addSubview(bottomLabel)

または、ぼかしビューの背景の上で使用している場合は、鮮やかさを使用して見栄えの良い効果を実現できます。

enter image description here

22
rikola
//Try This! Hope this helps!!

// Create a string
let myString = "Shadow"

// Create a shadow
let myShadow = NSShadow()
myShadow.shadowBlurRadius = 3
myShadow.shadowOffset = CGSize(width: 3, height: 3)
myShadow.shadowColor = UIColor.gray

// Create an attribute from the shadow
let myAttribute = [ NSShadowAttributeName: myShadow ]

// Add the attribute to the string
let myAttrString = NSAttributedString(string: myString, attributes: myAttribute)

// set the attributed text on a label
myLabel.attributedText = myAttrString

拡張機能として:

extension UILabel {

    func setTextWithShadow(_ string: String) {

        let shadow = NSShadow()
        shadow.shadowBlurRadius = 3
        shadow.shadowOffset = CGSize(width: 3, height: 3)
        shadow.shadowColor = UIColor.black.withAlphaComponent(0.5)

        let attributes = [ NSAttributedString.Key.shadow: shadow ]
        let attributedString = NSAttributedString(string: string, attributes: attributes)

        self.attributedText = attributedString
    }

}
7
Swifty Codes

リコラの答えはSwift 3:

import UIKit

let view = UIView(frame: CGRect.init(x: 0, y: 0, width: 100, height: 20))
view.backgroundColor = UIColor.yellow

let bottomLabel = UILabel(frame: CGRect.init(x: 0, y: 0, width: 100, height: 20))
bottomLabel.backgroundColor = UIColor.clear
bottomLabel.textColor = UIColor.white
bottomLabel.font = UIFont.boldSystemFont(ofSize: 18)
bottomLabel.text = "Testing"
bottomLabel.textAlignment = .center
bottomLabel.numberOfLines = 1
bottomLabel.layer.shadowOffset = CGSize(width: 0, height: 0)
bottomLabel.layer.shadowOpacity = 1
bottomLabel.layer.shadowRadius = 6

view.addSubview(bottomLabel)

ラベルを視覚的に表現するために、右側のバーのview.addSubview(bottomLabel)プリントにカーソルを合わせるときに、小さな「目」を押します。

1
ullstrm